Matlab 接受字符串并转为符号表达式,inline函数,匿名函数形式的方法汇总

1.接受字符串为符号表达式(symbolic expression)

例1

s='x^2+y^2';
f=sym(s);
g=findsym(f);

运行结果

>> f

f =

x^2 + y^2

>> g

g =

x,y

得到的s是char类型的字符串,f是sym类型的表达式,g是char类型的字符串,如下图所示

要得到,x=1,y=2时f的值,

>> subs(f,findsym(f),{1,2})

ans =

     5

2.接受字符串为内联函数(inline function)

 例2.

s='x^2+y^2';
f=inline(s);

运行结果

>> f

f =

     Inline function:
     f(x,y) = x^2+y^2

得到的s是char类型的字符串,f是sym类型的表达式

要得到x=1,y=2时f的值

>> f(1,2)

ans =

     5

3.接受字符串为匿名函数(anonymous function)

设s 为一个接受的字符串,将其转为匿名函数有三种方法

方法1

f = eval( sprintf('@(x,y) %s', s ))

方法2

f=eval(strcat('@(x,y)',s))

方法3

f=eval(['@(x,y)',s])

例3.

s='x^2+y^2';
f1=eval(sprintf('@(x,y)%s',s));
f2=eval(strcat('@(x,y)',s));
f3=eval(['@(x,y)',s]);

输出结果

>> f1

f1 = 

    @(x,y)x^2+y^2

>> f2

f2 = 

    @(x,y)x^2+y^2

>> f3

f3 = 

    @(x,y)x^2+y^2

输出的f1,f2,f3是相同的匿名函数

要得到x=1,y=2时匿名函数的值

 

>> f1(1,2)

ans =

5

 

 

 

 

 

转载于:https://www.cnblogs.com/MarshallL/p/4047880.html

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值