找回密码
 注册
关于网站域名变更的通知
查看: 453|回复: 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 }% a7 @# k* m2 C: c" C! Y4 T+ i. f
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
    9 Z" i0 ~& K4 {; H8 q

    $ @6 n% _$ l4 r. z5 ~/ U
    siny替换x,理想的转换效果:

      H) q  F4 X9 j- G# D& H- ~
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式
      6 z. A/ Y2 z/ I2 C2 d% M% d

    ( @9 w  U) h+ |! @0 @# Y

    0 T$ b* }: ^8 I- O
    ( C. I9 w7 `, z

    ' h- Z8 y5 M# X# W( A* Q
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
      " n# I% b+ M# P
    $ g2 C; R8 e1 c7 S7 h4 I2 X& h2 p+ Y
    7 ~, m3 [% _9 a4 L7 h7 c
    各位可以看看f的输出,会变成上面这个样子。

    ! A& g+ n: I' }8 r
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
    - Z0 E1 ?8 j( s  R" I# t1 B

    3 n& x& C  `* @  x( O) m6 e2 y, `2 F
    请教大神,有什么办法可以替换?非常感谢!

    & B5 l3 g3 `! T. `8 a5 C

    该用户从未签到

    2#
    发表于 2020-5-29 19:56 | 只看该作者
    8 L& g7 [# [& w0 R( M$ s5 ]
    1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???% [2 t4 R3 F2 w: d" k0 \) }8 }5 k( i
    2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。
    ) A& \2 g/ r1 Q: i3、你的例子替换有意义不?sin(y)在-1,1之间。( P5 \3 t1 e9 B
    f = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';, h# z, a1 j1 G  L: Z. Y. p
    f_char=strrep(f,'x','sin(y)');
    5 c0 x- U- J, r4 e% v8 kf1=str2sym(f_char);! I0 ^4 D6 q- R1 c0 _
    y=1;subs(f1)* \. J# y$ C; Q
    y=-1;subs(f1)
      K2 M* D# q5 Q! A" @' @- A; Q( J% l' B3 q8 e4 {% e

    8 w8 E7 C# X6 V, [+ S  ?1 l$ G% p/ F/ Oans =sin(1)/6
    1 {$ T; L' U7 G1 A+ L2 r& Zans =NaN
    - z+ A. t' M3 `% V% A- L; }) \! N
    暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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