EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 2 b5 K8 p. M5 ]) h
. \% q- I5 E5 m7 o2 Q. x要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数 - i8 [3 F D: w6 q% Z
2 g! j' {! F {4 E/ ?) o8 M
用siny替换x,理想的转换效果:
% b5 t/ D8 ^' _/ @/ |我的程序实现如下所示: - syms x
- f = piecewise(0< x <=1, x/6, 1 < x <= 2, -3*x^3); %原始分段函数的表达式
- f_char=char(f); %先把表达式变成字符串
- f_char=strrep(f_char,’x’,’siny’); %对字符串里的内容进行我想要的替换
- f=eval(f_char); %再把字符串变回表达式( A+ G. X- {, u
6 q# A+ o" {' E$ N9 y) Y( U8 j
+ Q( d! v, S& u6 H( t3 Y# A; ]; ?2 P0 J7 L
, s$ m+ f9 L. P5 S4 E( j
但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
! k0 z3 ^, {: r4 w/ f4 ?: u) X
/ O) I, }( ]) ~7 O8 L3 f3 Y; x, ]3 A6 `* e- ]9 T
各位可以看看f的输出,会变成上面这个样子。 7 \/ @7 v) i# u
由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
6 z0 l7 s& N, Y) m- [! B7 Q' n# P; e; r
请教大神,有什么办法可以替换?非常感谢! ; e ^$ V) N8 o) B
|