EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 ( [1 s% F8 ~- M0 |6 ~
& m, \0 P" q+ b
要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数 ) D7 w1 x3 G# `' ^4 b- V! ]+ I
, F' K, v0 o% O2 I用siny替换x,理想的转换效果:
k' ? M. y2 Y* o' 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); %再把字符串变回表达式
2 o. F: r3 f# C& Q' C
6 P( L) @& ?$ p. H( k I& ]/ U/ X8 w# P6 k1 P
2 @1 o5 V$ b& C
7 `, S( r K" ]; {9 a7 H: j: v" }; G但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
; `; D9 @) d# ~( c7 }4 q
) { f+ H% j/ \1 [+ D
2 |/ h1 A+ ^; ^) t% q3 ~各位可以看看f的输出,会变成上面这个样子。
1 }7 x' h+ h( _' c: ^: e1 C& k由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
0 D0 o. q7 |8 C! t9 u
; X$ Q# W4 K1 v8 [请教大神,有什么办法可以替换?非常感谢! , \9 k+ Q$ y" X7 Z. [' d! I4 p- `
|