在Matlab上获取带有循环的代码的最终变量

在Matlab上获取带有循环的代码的最终变量,matlab,for-loop,size,Matlab,For Loop,Size,我有一个带两个的循环代码。代码工作正常。问题是,最后我想得到一个变量megafinal,其中包含所有年份的结果。原始变量A有3M行,因此它给了我一个错误,因为megafinal的大小随着每次循环迭代而变化,并且matlab停止运行代码。我想这是一个效率低下的问题。是否有人知道一种方法来获得这个最终变量,不管它的大小 y = 1997:2013; for i=1:length(y) A=b(cell2mat(b(:,1))==y(i),:); %Obtain the absolut

我有一个带两个
的循环代码
。代码工作正常。问题是,最后我想得到一个变量
megafinal
,其中包含所有年份的结果。原始变量
A
有3M行,因此它给了我一个错误,因为
megafinal
的大小随着每次循环迭代而变化,并且matlab停止运行代码。我想这是一个效率低下的问题。是否有人知道一种方法来获得这个最终变量,不管它的大小

y = 1997:2013;
for i=1:length(y)
    A=b(cell2mat(b(:,1))==y(i),:);
    %Obtain the absolute value of the difference
    c= cellfun(@minus,A(:,3),A(:,4));
    c=abs(c);
    c= num2cell(c);
    A(:,end+1) = c;
    %Delete rows based on a condition
    d = (abs(cell2mat(A(:,8)) - cell2mat(A(:,7))));
    [~, ind1] = sort(d);
    e= A(ind1(end:-1:1),:);
    [~, ind2,~] = unique(strcat(e(:,2),e(:, 6)));
    X= e(ind2,:);
    (…)
    for j = 2:length(X)
        if strcmp(X(j,2),X(j-1,2)) == 0
            lin2 = j-1;
            %Sort
            X(lin1:lin2,:) = sortrows(X(lin1:lin2,:),13);
            %Rank 
            [~,~,f]=unique([X{lin1:lin2,13}].');
            g=accumarray(f,(1:numel(f))',[],@mean);
            X(lin1:lin2,14)=num2cell(g(f));
            %Score
out1 = 100 - ((cell2mat(X(lin1:lin2,14))-1) ./ size(X(lin1:lin2,:),1))*100;
            X(lin1:lin2,15) = num2cell(out1);
            lin1 = j;
        end
    end
    %megafinal(i)=X
end

使
megafinal
成为单元格数组。这将解释每次迭代时
X
的大小变化。因此,只需执行以下操作:

megafinal{i} = X;
要访问单元格元素,只需执行
megafinal{num}
,其中
num
是您想要的任何索引