找回密码
 注册
关于网站域名变更的通知
查看: 442|回复: 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 编辑 6 y( G% Y/ e. w: E: h
    $ b6 c3 q0 V8 l4 M, \0 x, L
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
    - Z* l' G2 g- u- a, w1 W
    8 z8 D( d# X( N4 s9 j- u3 V6 u+ b  X
    siny替换x,理想的转换效果:

    : i' [' h5 Z  ~6 y" B
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式
      , T3 ]! f5 _0 X5 F1 _& d" i
    ( c/ y, I; R& J
    ; s) }6 h! a% K* t1 t) O* I6 t6 X
    6 V' t6 T8 i4 v$ `, h& ]

    3 F0 O/ W  o1 A5 ?& i# k
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
      ' T  z8 ^! u8 W! k, s
    : G; `0 @# x8 W5 Q( W
    2 C  y9 d1 {- G& [+ {" _5 K/ @
    各位可以看看f的输出,会变成上面这个样子。
    0 C, `2 J! N2 }) t/ S: q
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。

    " `: e- ^% u) j. t- S4 o. o. M4 m5 z. ]" [( ]* d( I3 U5 H
    请教大神,有什么办法可以替换?非常感谢!
    & _- U( A5 U) |! t

    该用户从未签到

    2#
    发表于 2020-5-29 19:56 | 只看该作者
    1 K7 a' d" C. `1 g
    1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???
    0 X+ E" t9 g- n4 \4 ^2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。
    $ _6 W4 I, |; |6 r) r% J3、你的例子替换有意义不?sin(y)在-1,1之间。
    ' s7 n3 ^4 x2 v3 U- X# \f = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';
    ! l& I( m) b6 w6 c" xf_char=strrep(f,'x','sin(y)');+ p3 |' h5 \; _$ ~
    f1=str2sym(f_char);
    * J2 \+ J3 |. Ey=1;subs(f1)
    ! e: P/ d5 v( c8 f) _y=-1;subs(f1), v& U  h6 x9 k5 `& v& E' E
    - U6 S# B2 I5 ]% Z2 y5 U2 C

    . h6 A, m9 s. u& a, |ans =sin(1)/6' x5 b, F3 g% M, h5 H$ a+ r# X
    ans =NaN
    $ K: l& i+ I3 [& y+ r
    8 Z* u" j2 x8 m0 Q( F7 H# B暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-6 03:17 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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