EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 $ ~* V/ m( t( P1 r3 R9 ~, |
+ I& u3 v% m) ]% k
要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
: K5 M: f; k/ e/ D$ U' v2 X: ]
3 V) R3 D0 O- L* h8 T% j用siny替换x,理想的转换效果: ; |" A v( Y% S# b9 o
我的程序实现如下所示: - 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); %再把字符串变回表达式$ v# Z h: `; M. J- ^5 l# u; \
$ F. ~1 i$ N4 j( \& x7 s( k3 ^, {: l, q+ Z. p: d' @0 H, k
1 A1 J4 M/ J# ^! i/ ?
5 w8 [7 m* [) W e9 z但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3): B6 c" m1 C0 D9 U* J" D o
, Z$ N" @# z% G! v, ~3 Z0 f! Z
0 b/ S& p6 G Q7 T各位可以看看f的输出,会变成上面这个样子。 8 v' N& T' A' F6 K
由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
7 _7 Z# U1 @2 |: H, L W8 D( Y0 `% O$ T) |5 S8 P$ h8 B& h. p9 ?% N
请教大神,有什么办法可以替换?非常感谢! 5 o! R% |- x" i9 S/ e7 h4 _
|