找回密码
 注册
关于网站域名变更的通知
查看: 421|回复: 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 编辑 $ R8 Y9 n. E/ S: f! G

    # S1 z1 m* O7 L9 G/ x: F
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数

    2 g: o( i2 j/ b
    ! E  Y8 C% y) d2 V) g! u& F9 c
    siny替换x,理想的转换效果:
    - I7 P2 k# t6 M% r8 u7 U
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式( E9 e) q& g3 j. J% f: L! }* G* D

    0 C9 c- I+ P0 A4 g2 B' w. ?! @

    2 z. p$ N# n1 g9 f6 w
    ( A  O; D* E& }! r. G

    7 e: T9 y. @0 c. }. e/ p! r0 T
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
      . e0 \/ @/ `3 u, B+ K. q1 c7 A

    ) Z. w9 Z) x/ k# K: x0 g" P- c8 ^7 s" `
    & h0 x& s+ [9 R$ Q2 C
    各位可以看看f的输出,会变成上面这个样子。

    * S! X3 m& U# B( f
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
    9 x. H9 e8 N& J) w+ f

    , w4 e) h) @1 }( L% _! P3 b
    请教大神,有什么办法可以替换?非常感谢!

    & s  @4 R/ ~5 p9 I/ K

    该用户从未签到

    2#
    发表于 2020-5-29 19:56 | 只看该作者
    ) s6 c1 o, z; _( Q
    1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???
    - ~( o1 A2 y' c, ?: R$ y2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。
    4 }& f. ^* |, y# i3、你的例子替换有意义不?sin(y)在-1,1之间。! ~6 p% O) N2 J4 z2 [
    f = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';
    * q# I0 J# q4 Wf_char=strrep(f,'x','sin(y)');
    : X( Y8 b3 m8 [% n& m: Zf1=str2sym(f_char);, k- u; H3 S5 C2 d4 A
    y=1;subs(f1)
    6 S: J7 ]7 e2 H: yy=-1;subs(f1)
    ' J, a/ @& m& i4 o" {
    3 j0 O/ F. H& L2 v9 J' x3 E5 w! ~0 x# E
    ans =sin(1)/67 \- @, w1 R. ~3 D, A; @
    ans =NaN
    ( o) f8 v# x, @4 l4 H
    - p* d0 \/ g/ d: }+ o暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-18 00:04 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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