找回密码
 注册
关于网站域名变更的通知
查看: 416|回复: 1
打印 上一主题 下一主题

请教大神,有什么办法可以替换?

[复制链接]
  • TA的每日心情
    开心
    2019-11-29 15:41
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    跳转到指定楼层
    1#
    发表于 2020-5-29 19:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 MOTOACE 于 2020-5-29 19:28 编辑 2 b5 K8 p. M5 ]) h

    . \% q- I5 E5 m7 o2 Q. x
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
    - i8 [3 F  D: w6 q% Z
    2 g! j' {! F  {4 E/ ?) o8 M
    siny替换x,理想的转换效果:

    % b5 t/ D8 ^' _/ @/ |
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式( A+ G. X- {, u
    6 q# A+ o" {' E$ N9 y) Y( U8 j

    + Q( d! v, S& u6 H( t3 Y# A; ]; ?2 P0 J7 L
    , s$ m+ f9 L. P5 S4 E( j
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
      ! k0 z3 ^, {: r4 w/ f4 ?: u) X

    / O) I, }( ]) ~7 O8 L3 f
    3 Y; x, ]3 A6 `* e- ]9 T
    各位可以看看f的输出,会变成上面这个样子。
    7 \/ @7 v) i# u
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。

    6 z0 l7 s& N, Y) m- [! B7 Q' n# P; e; r
    请教大神,有什么办法可以替换?非常感谢!
    ; e  ^$ V) N8 o) B

    该用户从未签到

    2#
    发表于 2020-5-29 19:56 | 只看该作者

    7 G  y0 ~1 y2 r2 K( f0 m& O, C1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???7 z% S9 B% w/ d
    2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。9 {8 h& i) D. U9 d  T
    3、你的例子替换有意义不?sin(y)在-1,1之间。
    4 z( I: s7 `. w3 O+ P1 ~f = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';( e$ z% s& m- b8 H) f
    f_char=strrep(f,'x','sin(y)');
    7 W0 _. D( A0 r( [4 {9 V8 F$ u0 ]f1=str2sym(f_char);% B- k6 [. e* F8 ]1 |2 ?0 h! I' t* k
    y=1;subs(f1)
    8 x, |/ b# D: M6 ^% yy=-1;subs(f1)  z4 p( W2 P% H5 }
    $ G3 F. c3 B2 w

    4 m. N$ i* n. U  h* Ians =sin(1)/6; s$ k* z1 j( U% v
    ans =NaN  d9 u7 @, E3 e  h% s+ E4 B
    # a5 P* d2 }( K; Q+ R2 F
    暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-23 02:30 , Processed in 0.109375 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表