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