我在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
谢谢
答案 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
替换为jj
。i
和ii
太相似,以至于无法同时使用两者,这会造成混淆。对于不同的字母,最好使用不同的字母循环索引。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-使用i
和ii
的计算
kk = i + 5*(ii-18)
(像以前一样在循环中使用,没有增量)