找回密码
 注册
关于网站域名变更的通知
查看: 451|回复: 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 |* V% U+ t& s1 z
    ! \' y& h0 f0 {0 k' q- i
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
    4 ?% I; m) c4 V

    3 t$ f' B; L% i7 j
    siny替换x,理想的转换效果:

    & v1 s+ T7 F  l' g( P
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式
      : d: p9 e) |- Y& J( o* U
    7 `6 r6 `0 i" w, w
    # I% q3 ]* g2 p' {

    + h2 v- ?% [& P1 y$ _. M: N

      U( K8 x( g$ L, k/ r4 e
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
      ' p( h  Z" {0 D* z3 M+ p: j

    - K5 t7 k2 Y+ v8 t9 Y

    + ^+ E* h0 v4 _
    各位可以看看f的输出,会变成上面这个样子。
    1 B0 d2 ], j; s9 C. z6 m2 }4 j
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
    $ r* @" I" G% a

    5 E# V9 p/ X# e
    请教大神,有什么办法可以替换?非常感谢!
    & c/ |5 U7 @2 o, {

    该用户从未签到

    2#
    发表于 2020-5-29 19:56 | 只看该作者
    ! m) f, L) i4 L% Q' Z  u* Z
    1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???
    5 t* `8 `, Y* t9 H2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。
    # J& p5 S5 X; r6 d0 V3、你的例子替换有意义不?sin(y)在-1,1之间。
    ) o' Y8 C! s0 k0 J- ff = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';9 o, A) c4 j3 [6 H# W6 N, r2 d
    f_char=strrep(f,'x','sin(y)');+ W7 U% Q; d( ~7 K; |8 I7 U) X
    f1=str2sym(f_char);( k5 A) [6 r0 M* S5 ~
    y=1;subs(f1)
    : Y+ Q  T3 b- m6 v- o/ |3 k0 cy=-1;subs(f1)& a, z, _3 {) [* E
      d* F" t3 h% _; _5 m" e$ }
    % O1 y. Z1 C; U' t: M3 F
    ans =sin(1)/6
    " i& M6 U! B! R- d+ S; o7 ^ans =NaN1 y2 y" R' J' @& c; |; m  T
    4 \. |) E: r) h" W9 f* l+ u$ \
    暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 09:42 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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