EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑
|6 }% a7 @# k* m2 C: c" C! Y4 T+ i. f
要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数 9 Z" i0 ~& K4 {; H8 q
$ @6 n% _$ l4 r. z5 ~/ U用siny替换x,理想的转换效果:
H) q F4 X9 j- G# D& H- ~我的程序实现如下所示: - 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); %再把字符串变回表达式
6 z. A/ Y2 z/ I2 C2 d% M% d
( @9 w U) h+ |! @0 @# Y
0 T$ b* }: ^8 I- O
( C. I9 w7 `, z
' h- Z8 y5 M# X# W( A* Q但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
" n# I% b+ M# P $ g2 C; R8 e1 c7 S7 h4 I2 X& h2 p+ Y
7 ~, m3 [% _9 a4 L7 h7 c
各位可以看看f的输出,会变成上面这个样子。
! A& g+ n: I' }8 r由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。 - Z0 E1 ?8 j( s R" I# t1 B
3 n& x& C `* @ x( O) m6 e2 y, `2 F请教大神,有什么办法可以替换?非常感谢!
& B5 l3 g3 `! T. `8 a5 C |