EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 6 |* V% U+ t& s1 z
! \' y& h0 f0 {0 k' q- i
要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数 4 ?% I; m) c4 V
3 t$ f' B; L% i7 j用siny替换x,理想的转换效果:
& v1 s+ T7 F l' g( P我的程序实现如下所示: - 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); %再把字符串变回表达式
: d: p9 e) |- Y& J( o* U 7 `6 r6 `0 i" w, w
# I% q3 ]* g2 p' {
+ h2 v- ?% [& P1 y$ _. M: N
U( K8 x( g$ L, k/ r4 e但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
' p( h Z" {0 D* z3 M+ p: j
- K5 t7 k2 Y+ v8 t9 Y
+ ^+ E* h0 v4 _各位可以看看f的输出,会变成上面这个样子。 1 B0 d2 ], j; s9 C. z6 m2 }4 j
由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。 $ r* @" I" G% a
5 E# V9 p/ X# e请教大神,有什么办法可以替换?非常感谢! & c/ |5 U7 @2 o, {
|