EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 $ R8 Y9 n. E/ S: f! G
# S1 z1 m* O7 L9 G/ x: F要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
2 g: o( i2 j/ b! E Y8 C% y) d2 V) g! u& F9 c
用siny替换x,理想的转换效果: - I7 P2 k# t6 M% r8 u7 U
我的程序实现如下所示: - 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); %再把字符串变回表达式( E9 e) q& g3 j. J% f: L! }* G* D
0 C9 c- I+ P0 A4 g2 B' w. ?! @
2 z. p$ N# n1 g9 f6 w
( A O; D* E& }! r. G
7 e: T9 y. @0 c. }. e/ p! r0 T但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
. e0 \/ @/ `3 u, B+ K. q1 c7 A
) Z. w9 Z) x/ k# K: x0 g" P- c8 ^7 s" `& h0 x& s+ [9 R$ Q2 C
各位可以看看f的输出,会变成上面这个样子。
* S! X3 m& U# B( f由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。 9 x. H9 e8 N& J) w+ f
, w4 e) h) @1 }( L% _! P3 b请教大神,有什么办法可以替换?非常感谢!
& s @4 R/ ~5 p9 I/ K |