找回密码
 注册
关于网站域名变更的通知
查看: 423|回复: 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 s% F8 ~- M0 |6 ~
    & m, \0 P" q+ b
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
    ) D7 w1 x3 G# `' ^4 b- V! ]+ I

    , F' K, v0 o% O2 I
    siny替换x,理想的转换效果:

      k' ?  M. y2 Y* o' 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);     %再把字符串变回表达式
      2 o. F: r3 f# C& Q' C

    6 P( L) @& ?$ p. H( k  I
    & ]/ U/ X8 w# P6 k1 P

    2 @1 o5 V$ b& C

    7 `, S( r  K" ]; {9 a7 H: j: v" }; G
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)
      ; `; D9 @) d# ~( c7 }4 q

    ) {  f+ H% j/ \1 [+ D

    2 |/ h1 A+ ^; ^) t% q3 ~
    各位可以看看f的输出,会变成上面这个样子。

    1 }7 x' h+ h( _' c: ^: e1 C& k
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。

    0 D0 o. q7 |8 C! t9 u
    ; X$ Q# W4 K1 v8 [
    请教大神,有什么办法可以替换?非常感谢!
    , \9 k+ Q$ y" X7 Z. [' d! I4 p- `

    该用户从未签到

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

    ) Y, o% m8 C& g. M9 K4 t% S1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???0 w  y) y5 g- R- b$ _$ f% t
    2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。
    : ?( q0 ?( r0 \) ]+ n& F, D3、你的例子替换有意义不?sin(y)在-1,1之间。
    3 Y9 J( e4 p( A( \" qf = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';
    2 A  c, A  b7 f  Rf_char=strrep(f,'x','sin(y)');# p8 I. _  L/ y' ]+ Z
    f1=str2sym(f_char);
    5 c# O% C  z/ x. L- uy=1;subs(f1)
    ' W8 K: x  }! X' n$ O$ Ty=-1;subs(f1)- c4 ]( O( {0 i

    $ R( J9 X- B' A: w- S; B8 g9 Y* [4 @* X" g, H- P) h" o% P
    ans =sin(1)/62 ?" M! F6 v& ^; N# O& P/ ?
    ans =NaN
    5 g4 a5 a, B) e# L' e. J0 I4 v8 i$ E9 m8 O# T% E
    暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-24 03:52 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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