找回密码
 注册
关于网站域名变更的通知
查看: 406|回复: 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 编辑 1 I5 D0 L: J' }( \

    8 @0 Q+ k- P0 [5 Q6 H
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数

    2 t. _7 D# u3 v" G& ~; O+ I
    & R2 f( _9 N. W& o
    siny替换x,理想的转换效果:

    + ^% ]. o& F$ k# R& ]6 j2 {4 r# `
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式
      $ [+ `% m' ^) H/ B; Z

    : R5 d) c1 W& g

    1 h$ L/ E8 g( v% l+ Y
    " L; {2 W+ H% B! N3 j) F9 I& u

    7 I0 K( l4 O) Y$ f2 H
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
      9 L6 U) y2 a4 d
    0 Q% t8 ]. `. h9 b
    ' X' Q" I& R( w$ ]  j; d4 c
    各位可以看看f的输出,会变成上面这个样子。

    # t* n3 G; h4 @' ^8 ?
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
    7 Q& ^. B+ C* C

    5 r# E& ]6 ?7 U; e, u: T
    请教大神,有什么办法可以替换?非常感谢!
    ' ]' X* K/ {! }" w0 R1 o: e

    该用户从未签到

    2#
    发表于 2020-5-29 19:56 | 只看该作者
    . t' J2 f# r2 \6 b+ s! u" G
    1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???
    ' T' q0 b/ r* A0 I4 {1 x2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。
    5 d$ t9 e/ `( l4 b$ B. d4 p/ ^3、你的例子替换有意义不?sin(y)在-1,1之间。2 R( M0 Y1 z1 f9 d+ w" ~) v
    f = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';& f( U4 J) x5 _; }( B+ e# F4 E# _
    f_char=strrep(f,'x','sin(y)');
    : q, T& @& o: n# xf1=str2sym(f_char);
    # |: t; O6 Z  By=1;subs(f1)/ o3 ^6 p, w- X
    y=-1;subs(f1)7 P# y: a3 a+ O& d4 o( u

    , g, i" F$ ?2 P0 W5 a: ?
    , @0 @' v1 f" X- d. g, i! Yans =sin(1)/6
    9 B: f$ l- v, t5 sans =NaN
    " t9 o/ x. C3 Q+ g2 B& m& ?& E! v
    ' D  ]! ?% k$ G- e. K! P% a$ b" i暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-25 02:44 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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