如何在MATLAB中减少匿名函数中的参数数量? 这是一个简短的例子:
f = @(p,x) p(1).*x.^2 + p(2);
p = [1,2];
g = @(x) f(p,x);
这么长时间工作正常。但我想将带有所有参数的最终函数导出到字符串。
string = func2str(g);
结果是@(x) f(p,x)
,但在我看来它应该是@(x) 1.*x.^2 + 2
。
怎么可能意识到这一点?
答案 0 :(得分:3)
您可以使用符号数学工具箱来简化:
function h = cleanhandle(f)
syms x;
h = matlabFunction(f(x));
end
用法:
>> g2 = cleanhandle(g)
g2 =
@(x)x.^2+2.0
这是具有多个输入参数的函数的版本:
function f=cleanhandle(f)
n=nargin(f);
A=sym('A', [n 1]);
A=mat2cell(A,ones(n,1));
f=matlabFunction(f(A{:}));
end