找回密码
 注册
关于网站域名变更的通知
查看: 457|回复: 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 编辑 : ]/ y: T5 ]7 v" a
    . p& `0 q7 o/ q8 M# K0 c
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数

    1 Q) i8 {0 N, @- Y7 w6 y
    " \' }2 C; @8 S
    siny替换x,理想的转换效果:

    ) X- i  }( M5 z% L# C
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式
      3 k; s- `& r0 b! @( P
    2 Y  [7 n* ]- K' y% T
    - f$ m! I' v: M5 r4 L& A& D1 ?1 \

    0 T& M- k8 P6 [! a3 D. d+ y
    : M0 l) `- `" F% n- H
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
      9 N$ i1 T" M8 s

    ' i: |: S# T% f( X0 z' n- C
    $ l& ~* C* L4 x4 A, r
    各位可以看看f的输出,会变成上面这个样子。
    ' r/ o! i& i. z1 T* Q/ }
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
    - p+ [! O/ R! o/ i% h: _, D

    ( }" a  G5 \" S5 J: d% V
    请教大神,有什么办法可以替换?非常感谢!

    ' G4 [7 P0 }  n7 u$ C$ s. V

    该用户从未签到

    2#
    发表于 2020-5-29 19:56 | 只看该作者

    ; \& z1 p' }) U* A, V; i1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???' h; t" V9 `6 ~2 X" s7 \
    2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。; v4 f/ F, W5 {- O; G" _
    3、你的例子替换有意义不?sin(y)在-1,1之间。
    , G1 T" x8 h& u8 Rf = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';3 k, F" g- u7 b2 P# R
    f_char=strrep(f,'x','sin(y)');1 r' C7 C% ~+ H5 |% O+ z9 C5 L
    f1=str2sym(f_char);/ i5 R" {1 \" v8 ~' L. \
    y=1;subs(f1)8 V3 [) x# g" W
    y=-1;subs(f1)
    / h3 N; H' z8 c/ T4 s1 _/ Y* ~2 Y* _; N5 g5 ~; R& g, b
    - F$ J" a. M( x) `+ |8 F8 C$ ]
    ans =sin(1)/6' q; M- Y! C$ V( k+ L- l
    ans =NaN
    - l! U4 L- e7 D- \1 X- a
    ! N0 G3 h6 l& G; g  B暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 20:28 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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