EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑
/ K1 T' t5 J) s2 M8 X% P# t6 f9 ^7 h" M* _
要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数 2 v( |; R: `& V
6 B$ [" |/ d1 }; g% C
用siny替换x,理想的转换效果: 7 t. v+ `0 {$ o- S7 M
我的程序实现如下所示: - 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( X- ^+ z& ^' R! a `
" ~2 l; r! e/ `( T: ` Q1 g& k9 v3 \) D; c' k
9 o, x4 [7 Z {4 d$ N* [
+ y/ r) O$ Q; ^. d3 \! V
但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)- a! ?2 `* y2 M" u. L
9 T* G6 I/ }+ [ U" g
; I' g$ r5 L7 g5 L' G各位可以看看f的输出,会变成上面这个样子。 9 @$ v! M) R5 c
由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。 4 n1 y. K3 ^: S8 f ~" T2 \
4 }' H1 W+ q* E
请教大神,有什么办法可以替换?非常感谢! # W" u3 r3 B) W% b# t! p3 A
|