MATLAB中的双for循环,存储信息
我在MATLAB中有两个for循环 其中一个for循环导致不同的变量被插入到模型中,它们是43,然后我有5个视界 所以我估计这个模型有215次 我的问题是我想把它存储在215x5矩阵中,我有x5的原因是我估计了5个变量,4个是固定的,另一个来自for循环 我尝试了两种方法 首先,我创建了一个名为out的变量MATLAB中的双for循环,存储信息,matlab,for-loop,Matlab,For Loop,我在MATLAB中有两个for循环 其中一个for循环导致不同的变量被插入到模型中,它们是43,然后我有5个视界 所以我估计这个模型有215次 我的问题是我想把它存储在215x5矩阵中,我有x5的原因是我估计了5个变量,4个是固定的,另一个来自for循环 我尝试了两种方法 首先,我创建了一个名为out的变量 out=zeros(215,5); 第一个for循环是 for i=[1,2,3,4,5]; for ii=18:60; 第二个for循环是 for i=[1,2,3,4,5];
out=zeros(215,5);
第一个for循环是
for i=[1,2,3,4,5];
for ii=18:60;
第二个for循环是
for i=[1,2,3,4,5];
for ii=18:60;
18:60是我使用XLS read定义变量的方式,例如,它们作为(数据:,ii)插入模型中
我尝试用两种方式存储数据,我想存储包含五个估计值的OLS
首先,
out(i,:)=OLS;
该方法创建一个5 x 5矩阵,在每个视界处对其中一个(18:60)进行估计
第二,
out(ii,:)=OLS;
这只在一个视界上存储每个变量的变量(18:60)
我想有一个矩阵,它存储了我的每一个(18:60)在每个视界的所有估计值
最小示例
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
我想让变量存储所有的组合
i、 e
正如您所发现的,只使用一个循环变量对输出结果进行索引,大多数结果都被覆盖,只留下相关循环的最终迭代结果 有两种方法可以创建索引变量 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)
(如前所述,在循环中使用,不增加)最简单的解决方案是使用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));
(注意:我用
jj
替换了I
,I
和ii
两者太相似了,这会导致混淆。最好使用不同的字母作为循环索引。I
也可以使用,但它也是内置的虚数sqrt(-1)。因此我更喜欢使用ii
而不是I
)请出示一张照片。将OLS
替换为rand(5,5)
。代码的文字描述很难理解,特别是当你可以显示代码的时候!但是,现在看起来有两个循环,大小为45*5=215,在每个循环中称为OLS,大小为25。所以你必须是215x25,不是吗?我会努力的,谢谢。我已经添加了一个我认为可以的例子!让我知道你能澄清你在文本中使用5x5矩阵的意思吗<代码>x有1x5,而不是5x5请不要使用i
和ii
。这只会引起混乱。为什么不ii
和jj
?谢谢@AnderBiguri在我的示例中,第一个选项似乎很好。@AnderBiguri谢谢,我把I
和ii
放在计算中,但忘记了包含较高的起始值。尽量不要使用I
作为循环索引,因为它会覆盖MATLABs的虚拟单位,并可能导致难以发现错误。此外,您还可以使用I
和ii
计算kk
MATLABs内置函数sub2ind。注意,第一个块和第二个块产生不同的输出顺序,因为MATLAB按列存储数据。