找回密码
 注册
关于网站域名变更的通知
查看: 417|回复: 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 编辑
    $ n* p% M  ?9 B! C- F3 x
    $ |5 q: V% G  @( o  K
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
    - ~# N  u) C# T6 n
      p  B6 b- P7 l. U
    siny替换x,理想的转换效果:
    9 K) N7 w5 z* L8 L/ k" K
    我的程序实现如下所示:
    • 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 y. g4 i' R+ O3 O
    ! X! ]; N# s; t- O3 x7 l
    , X& {$ O# O% G5 `2 O3 `# V

    ' k% @0 z; \$ K& F

    . _8 a% ^: w2 f5 Y4 o2 b% u
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)9 W2 j! L% ~9 s' ]
    * z5 F$ L) F1 F2 o  P3 {! o

    / |. T8 v5 Y+ p! L8 S. f
    各位可以看看f的输出,会变成上面这个样子。
    1 `0 ?2 `- o3 _" Y
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。

    4 j: J; a- U; U! _+ n
    ( F* P2 ?! M1 ]3 [* M
    请教大神,有什么办法可以替换?非常感谢!
    1 o( K- m6 d5 U! c+ h

    该用户从未签到

    2#
    发表于 2020-5-29 19:56 | 只看该作者
    1 k9 e0 i9 L1 }4 G
    1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???
    # X2 s% H3 |: {, s; l6 M2 O2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。
    3 H+ |9 X4 Z8 f" L5 w8 ?8 ~4 A( e& U; h3、你的例子替换有意义不?sin(y)在-1,1之间。
    2 G; I" z" q8 f, `* Nf = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';. e9 |- f3 i( R' B9 X" n
    f_char=strrep(f,'x','sin(y)');  w( q: m5 ~9 f* Q/ ]- i5 L8 M; o
    f1=str2sym(f_char);5 z' r% q6 i5 W$ z! B' W
    y=1;subs(f1)
    ( c/ y+ M, ]6 }4 ~y=-1;subs(f1)
    ) @- F4 {9 ^( g2 J8 J4 G/ G; [8 U& h  E: ?

    5 e1 [$ o, {* t% U: ^1 Qans =sin(1)/6
    ) d: M; h' j! pans =NaN
    2 V4 ]  }) V+ J- M9 z( J8 W
    0 }) K2 i$ t+ r- w. |暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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