EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑
$ n* p% M ?9 B! C- F3 x
$ |5 q: V% G @( o K要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数 - ~# N u) C# T6 n
p B6 b- P7 l. U
用siny替换x,理想的转换效果: 9 K) N7 w5 z* L8 L/ k" K
我的程序实现如下所示: - 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 y. g4 i' R+ O3 O
! X! ]; N# s; t- O3 x7 l
, X& {$ O# O% G5 `2 O3 `# V
' k% @0 z; \$ K& F
. _8 a% ^: w2 f5 Y4 o2 b% u但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)9 W2 j! L% ~9 s' ]
* z5 F$ L) F1 F2 o P3 {! o
/ |. T8 v5 Y+ p! L8 S. f各位可以看看f的输出,会变成上面这个样子。 1 `0 ?2 `- o3 _" Y
由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
4 j: J; a- U; U! _+ n
( F* P2 ?! M1 ]3 [* M请教大神,有什么办法可以替换?非常感谢! 1 o( K- m6 d5 U! c+ h
|