找回密码
 注册
关于网站域名变更的通知
查看: 455|回复: 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 编辑
      S8 j( u: K' [
    0 e1 X) C" e  e* Z0 k! n
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数
    # H: c7 \, V& w6 h2 {

    ( ?& U1 Q2 ]- a: _
    siny替换x,理想的转换效果:

    * S' F5 `2 _7 O7 S/ A3 ^
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式) T: ~$ @+ c2 R% Y

    . R+ i/ N6 C& E, o7 i' z

    ) @" u6 Z4 S* g( i5 {' J/ r
    0 y# w7 |# ?% d- c* Y
    2 O- F& {. q$ Q+ l. \
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3)5 {8 @! j' B% p2 I' X2 [* N/ I
    * _# Y5 M1 Z. c3 H1 i1 w
    5 ~& D" r* `  S
    各位可以看看f的输出,会变成上面这个样子。

    " E, s+ b  p# B
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。
    " r+ \) c+ L2 b# F2 h
    % C( a6 v0 t; s  H' C+ Z: p
    请教大神,有什么办法可以替换?非常感谢!
    / X0 B; C1 _1 L! U5 X( W2 `

    该用户从未签到

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

    " X  S, U$ n( b4 _/ h1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???9 {  E# N5 x( V& M' k
    2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。9 E8 b: b- R9 x2 o
    3、你的例子替换有意义不?sin(y)在-1,1之间。
    # j$ U6 k2 R: af = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';1 l8 T5 H! N0 |1 Y
    f_char=strrep(f,'x','sin(y)');. S/ J- |9 f& i- d  R) q  I9 d, L* g
    f1=str2sym(f_char);+ C( d, d0 k" S. I) U! s) s
    y=1;subs(f1)
    ( c, n7 O8 V9 m0 a7 ?% my=-1;subs(f1); F6 L& M  \% b, G, `

    6 T! K- B! N! d; n6 B) Y0 P# C9 F1 M4 p8 D
    ans =sin(1)/6  y- x& X+ Y* ^( z; d7 ]! ^
    ans =NaN( L" y, j8 p: V6 `% u8 X* [% K# L; x

    % ]4 F4 ~& J  j  G% K$ h* k) X. G暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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