Matlab 存储单元阵列';在一个数组中

Matlab 存储单元阵列';在一个数组中,matlab,Matlab,我这样调用函数: beta=NaN(size(rates,1),6); mats=[1:50]; mats2=[2 5 10 30]; for i=1:2 y2=rates(i,mats2); yM=rates(i,:); dataList=struct('yM',yM,'mats',mats,'model',@NSS,'mats2',mats2,'y2',y2); de=struct('min',[0;3.5],'max',[3.5;30],'d',2,'nP',200,'nG',6

我这样调用函数:

beta=NaN(size(rates,1),6);

mats=[1:50];

mats2=[2 5 10 30];

for i=1:2
y2=rates(i,mats2);
yM=rates(i,:);

dataList=struct('yM',yM,'mats',mats,'model',@NSS,'mats2',mats2,'y2',y2);

de=struct('min',[0;3.5],'max',[3.5;30],'d',2,'nP',200,'nG',600,'ww',0.1,'F',0.5,'CR',0.99,'R',0,'oneElementfromPm',1);


beta(i,:)=DElambdaVec(de,dataList,@OF);
end
但是,DElabdavec的输出是一个单元格数组:

output.Fbest=Fbest; output.xbest=xbest; output.Fbv=Fbv;

如何在for循环的每次过程中存储这些项目?

您可以将结果保存到单元格数组中-在这种情况下:

beta{i} = DElambdaVec(de,dataList,@OF);
beta
的每个元素现在都是由
DElambdaVec
返回的对象,例如:

beta{1}

ans = 

Fbest: 'Fbest'
xbest: 'xbest'
  Fbv: 'Fbv'
我使用示例值在这里创建条目

请注意,您必须在循环之前初始化
beta=[]