在MATLAB中进行两次for循环,存储信息

时间:2018-08-22 12:52:36

标签: matlab for-loop

我在MATLAB中有两个for循环。

其中一个for循环导致将不同的变量插入到模型中,这些变量分别为43,然后有5个层。

因此,我估计模型为215次。

我的问题是我要将其存储在215x5矩阵中,我拥有x5的原因是我估计了5个变量,其中4个是固定的,而另一个则来自for循环。

我试图通过两种方式来做到这一点,

首先,我创建一个名为

的变量。
out=zeros(215,5);

第一个for循环是

for i=[1,2,3,4,5];

第二个for循环是

for  ii=18:60;

18:60是我如何使用XLS读取来定义变量的方法,例如它们作为(data:,ii)插入模型。

我试图以两种方式存储数据,我想存储包含五个估算值的OLS

首先

out(i,:)=OLS;

此方法将创建一个5 x 5矩阵,并在每个视野中使用(18:60)之一的估计值。

第二,

out(ii,:)=OLS;

这仅在一个范围内存储每个变量(18:60)的变量。

我想要一个矩阵,用于存储我的每个年龄段(18:60)的所有估计值OLS。

最小示例

clear;

for i=[1,2,3,4,5];
    K=i; 
    for  ii=18:60
        x=[1,2,3,i,ii];
        out(i,:)=x;       
    end
end

因此变量out将存储1 2 3 5 60

我希望变量存储所有组合

1 2 3 1 1
1 2 3 1 2
  ...
1 2 3 5 60

谢谢

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用3D矩阵:

for jj=[1,2,3,4,5];
    K=jj;
    for ii=18:60
        x=[1,2,3,jj,ii];
        out(ii-17,jj,:)=x;       
    end
end

如果现在重塑out矩阵,则得到的结果与etmuse答案的第一个块相同:

out = reshape(out,[],size(out,3));

(请注意,我将i替换为jjiii太相似,以至于无法同时使用两者,这会造成混淆。对于不同的字母,最好使用不同的字母循环索引。i可以使用,但它也是内置的虚数sqrt(-1)。因此,我更喜欢在ii上使用i。)< / p>

答案 1 :(得分:0)

您已经发现,仅使用循环变量之一对输出结果进行索引会导致大多数结果被覆盖,而仅保留相关循环的最终迭代中的结果。

有两种创建索引变量的方法。

1-您可以使用自变量,该变量在循环之前初始化,并在内部循环结束时递增。

kk=1; 
for i=1:5
    for ii=18:60
        %calculate OLC
        out(kk,:)=OLC;
        kk = kk+1;
    end 
end

2-使用iii的计算

kk = i + 5*(ii-18)  

(像以前一样在循环中使用,没有增量)