EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑
S8 j( u: K' [
0 e1 X) C" e e* Z0 k! n要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数 # H: c7 \, V& w6 h2 {
( ?& U1 Q2 ]- a: _用siny替换x,理想的转换效果:
* S' F5 `2 _7 O7 S/ A3 ^我的程序实现如下所示: - 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); %再把字符串变回表达式) T: ~$ @+ c2 R% Y
. R+ i/ N6 C& E, o7 i' z
) @" u6 Z4 S* g( i5 {' J/ r
0 y# w7 |# ?% d- c* Y 2 O- F& {. q$ Q+ l. \
但是遇到了问题,分段函数 f 会被自动改写成: - piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)5 {8 @! j' B% p2 I' X2 [* N/ I
* _# Y5 M1 Z. c3 H1 i1 w
5 ~& D" r* ` S
各位可以看看f的输出,会变成上面这个样子。
" E, s+ b p# B由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。 " r+ \) c+ L2 b# F2 h
% C( a6 v0 t; s H' C+ Z: p
请教大神,有什么办法可以替换?非常感谢! / X0 B; C1 _1 L! U5 X( W2 `
|