如何在MATLAB匿名函数中减少参数个数?

时间:2013-12-03 10:34:30

标签: matlab anonymous-function

如何在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

怎么可能意识到这一点?

1 个答案:

答案 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