Matlab循环在不同的单元格上运行

时间:2015-05-07 03:55:49

标签: arrays matlab function loops

编辑:5月8日。感谢下面的评论。

我有一套关于公司和年份的数据。每个公司的数据都存储在一个单元阵列中。我需要运行一个函数firm来估算每个公司的向量。有成千上万的公司。如果我专门为一家公司编写这个功能,那就顺利了,但我不知道如何一次将功能应用到每个阵列单元。

我对单个单元格的函数是(内部的一些计算被简化):

function obj=firm(data,s)
a=data(:,1);
b=data(:,2);
obj=f(a,b,s); 
%obj is a function of a,b and s to estimate
end 

然后当我使用fminsearch时,它运作良好: [mix, mifval]=fminsearch(@(s) firm(data{1,1},s),zeros(1,n))

但现在考虑将其应用于数千家公司(数千个电池)。我写了一个循环:

function obj=firm(data,s)
n=size(data,2);    
 for i=1:n
a=data{1,i}(:,1);
b=data{1,i}(:,2);
 % here I want i to be a loop from 1 to n.
obj=f(a,b,s{1,i}); 
 % Obj is a function of a, b and the s I focus on. 
 end
end

然后我打电话给: [mix, mifval]=fminsearch(@(s) whole(supdata,supitem,s),a) %a is the initial value of s, a matrix of n*12

返回的混合正好是n * 12,但mifval只是一个标量,它应该是一个n * 1向量,返回obj的最小值。

我该如何解决?感谢。

0 个答案:

没有答案