找回密码
 注册
关于网站域名变更的通知
查看: 405|回复: 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 编辑 $ ~* V/ m( t( P1 r3 R9 ~, |
    + I& u3 v% m) ]% k
    要实现的功能:将已知表达式的分段函数中的变量进行替换。比如有一个分段函数

    : K5 M: f; k/ e/ D$ U' v2 X: ]

    3 V) R3 D0 O- L* h8 T% j
    siny替换x,理想的转换效果:
    ; |" A  v( Y% S# b9 o
    我的程序实现如下所示:
    • 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);     %再把字符串变回表达式$ v# Z  h: `; M. J- ^5 l# u; \

    $ F. ~1 i$ N4 j( \& x7 s( k
    3 ^, {: l, q+ Z. p: d' @0 H, k
    1 A1 J4 M/ J# ^! i/ ?

    5 w8 [7 m* [) W  e9 z
    但是遇到了问题,分段函数 f 会被自动改写成:
    • piecewise(x in Dom::Interval(0, [1]), x/6, x in Dom::Interval(1, [2]), -3*x^3): B6 c" m1 C0 D9 U* J" D  o

    , Z$ N" @# z% G! v, ~3 Z0 f! Z

    0 b/ S& p6 G  Q7 T
    各位可以看看f的输出,会变成上面这个样子。
    8 v' N& T' A' F6 K
    由于出现了 in Dom::Interval 这些无法被计算的字符,因此eval会报错,导致无法表示成表达式。

    7 _7 Z# U1 @2 |: H, L  W8 D( Y0 `% O$ T) |5 S8 P$ h8 B& h. p9 ?% N
    请教大神,有什么办法可以替换?非常感谢!
    5 o! R% |- x" i9 S/ e7 h4 _

    该用户从未签到

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

    & }; A  a- M( ~( x6 Y8 V; @1、有看函数的帮助吗?0< x <=1  可以这样写??? siny,可以这样写吗???: e5 ]! U, J  W3 t
    2、为何开始就用sym的piecewise,不可以直接用字符吗?替换之后再转。* O) V6 v$ |/ W3 h! h
    3、你的例子替换有意义不?sin(y)在-1,1之间。
    2 A7 F# Y* k$ m* l- D7 K& ^f = 'piecewise(0< x & x<=1, x/6, 1 < x & x<= 2, -3*x^3)';
    9 _2 n: w$ `% O! }1 q9 Ff_char=strrep(f,'x','sin(y)');0 C" I! t6 k/ U; Y
    f1=str2sym(f_char);
    . `8 G$ _# E- gy=1;subs(f1)
    ! R! P2 T0 [! v. ty=-1;subs(f1)( o4 g5 l4 x( ~* O; m

    ( B, e/ }# y8 P9 X0 a' X. j
    ( b/ s! Y0 \2 \1 kans =sin(1)/6% D$ w6 k9 V3 q3 N3 j7 T
    ans =NaN
    . X9 f" D6 q; X% N" y2 P5 Y, S
    % \  V- S  O& \! w3 i5 m暂时想到能用subs赋值。不知道是否有其他的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-24 19:35 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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