EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 9 e1 }. \* T+ X9 {
3 }+ \& @4 |7 u/ L% m. Z要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
6 t9 v) V# d# ]+ H/ \' [4 c* h
用siny替换x,理想的转换效果:
1 i. }- s+ t. |3 u* k( P7 y# d; R我的程序实现如下所示: - 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); %再把字符串变回表达式
3 n9 g; b# C, Z" b! i- l
3 i7 f' H* { d' q. Y% h! Z9 F
; M; H& Q$ T: U8 r0 {
) h" A. S! |$ C- m
4 J" f4 T) F: ]0 n5 |但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3). I f( l$ U( E# \) Q. L8 @ z
* K2 `8 Q( R0 H) }
7 t* B) @- K6 O) b" c
各位可以看看f的输出,会变成上面这个样子。 ! G: D8 f+ x( T+ f8 a
由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
, a' g& y: V8 r0 B3 F% m1 ^
/ ~5 J6 n# a0 e h) ?, b& \7 K% r. j请教大神,有什么办法可以替换?非常感谢!
7 @1 a d9 O4 h1 r+ Q0 i |