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