EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 1 I5 D0 L: J' }( \
8 @0 Q+ k- P0 [5 Q6 H要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
2 t. _7 D# u3 v" G& ~; O+ I& R2 f( _9 N. W& o
用siny替换x,理想的转换效果:
+ ^% ]. o& F$ k# R& ]6 j2 {4 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); %再把字符串变回表达式
$ [+ `% m' ^) H/ B; Z
: R5 d) c1 W& g
1 h$ L/ E8 g( v% l+ Y
" L; {2 W+ H% B! N3 j) F9 I& u
7 I0 K( l4 O) Y$ f2 H但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
9 L6 U) y2 a4 d 0 Q% t8 ]. `. h9 b
' X' Q" I& R( w$ ] j; d4 c
各位可以看看f的输出,会变成上面这个样子。
# t* n3 G; h4 @' ^8 ?由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。 7 Q& ^. B+ C* C
5 r# E& ]6 ?7 U; e, u: T请教大神,有什么办法可以替换?非常感谢! ' ]' X* K/ {! }" w0 R1 o: e
|