EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 6 y( G% Y/ e. w: E: h
$ b6 c3 q0 V8 l4 M, \0 x, L
要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数 - Z* l' G2 g- u- a, w1 W
8 z8 D( d# X( N4 s9 j- u3 V6 u+ b X
用siny替换x,理想的转换效果:
: i' [' h5 Z ~6 y" B我的程序实现如下所示: - 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); %再把字符串变回表达式
, T3 ]! f5 _0 X5 F1 _& d" i ( c/ y, I; R& J
; s) }6 h! a% K* t1 t) O* I6 t6 X
6 V' t6 T8 i4 v$ `, h& ]
3 F0 O/ W o1 A5 ?& i# k但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
' T z8 ^! u8 W! k, s : G; `0 @# x8 W5 Q( W
2 C y9 d1 {- G& [+ {" _5 K/ @
各位可以看看f的输出,会变成上面这个样子。 0 C, `2 J! N2 }) t/ S: q
由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
" `: e- ^% u) j. t- S4 o. o. M4 m5 z. ]" [( ]* d( I3 U5 H
请教大神,有什么办法可以替换?非常感谢! & _- U( A5 U) |! t
|