我正在从几个回归中保存系数,并希望稍后一次评估所有不同的预测值。这个特殊的代码将被调用很多,所以我希望这个代码尽可能快速有效。 我的想法是我有一个对象,比如说
F{1} = @(x) 0.5 + 1*x
F{2} = @(x) 0.3 + .4*x
现在我想评估一下F(5)得到5.5和2.3作为我的结果,而不必做F {1}(5)和F {2}(5)。
答案 0 :(得分:1)
你的两个职能:
F{1} = @(x) 0.5 + 1*x;
F{2} = @(x) 0.3 + .4*x;
% create another anonymous function which calls both F{1} and F{2}
FF = @(x) [F{1}(x) F{2}(x)];
FF(5)
为您提供输出:
[5.5 2.3]
修改强>
如果你想要一些更聪明的东西,你可以使用正常的功能来收集""你可以用以下方法做些什么:
function test_function
F{1} = @(x) 0.5 + 1*x;
F{2} = @(x) 0.3 + .4*x;
result = collectorFunction ( 5, F{:} )
end
function output = collectorFunction ( x, varargin )
output = zeros(nargin-1,1);
for ii=2:nargin
output(ii-1) = feval(varargin{ii-1}, x );
end
end
结果
5.5
2.3
然后,如果您添加另一个F{3}
,例如收集器功能将自动收集结果:
function test_function
F{1} = @(x) 0.5 + 1*x;
F{2} = @(x) 0.3 + .4*x;
F{3} = @(x) 1.3 + .3*x; % Simply ADD a new F{N}....
result = collectorFunction ( 5, F{:} )
end
function output = collectorFunction ( x, varargin )
output = zeros(nargin-1,1);
for ii=2:nargin
output(ii-1) = feval(varargin{ii-1}, x );
end
end
结果:
5.5
2.3
2.8