Matlab - 将来自循环的数据存储在矩阵(不是向量)中
Matlab - storing data from a loop in a Matrix (not a vector)
作为更大脚本的一部分,我想将来自 while 循环的数据存储在矩阵中。我想在新矩阵中保存 1738x3 的 COG_Ton_Av 矩阵的一部分。 COG_Ton_Av 在每个循环中都会发生变化,所以我想将结果存储在外部。我找到了多个关于如何将数据存储在向量中的条目,但没有找到关于矩阵的条目。我试过的是:
valuesforts= zeros(1000,3);
yr =1
while Qn>0
yindex = Gmhk*100
zindex = round(gs*100)
ts = (COG_Ton_Av ((zindex:yindex),:))
valuesforts(yr)=ts
yr = yr+1
end
我只是贴出了 while 循环的一部分以使问题更简单,我希望它足以回答问题。
尝试此操作时出现以下错误:
下标赋值维度不匹配。
cutoff_work14_priceescalation_and_stockpiling 中的错误(第 286 行)
值(年)=ts
该错误意味着 ts 与 valuesforts 的大小不同(并且它以 yr 作为向量进行索引。
如果 TS 的维度在循环的每次迭代中都不同,则使用单元格表示法:
valuesforts = cell(<number of years>);
...
valuesforts{yr} = ts;
那么 ts 的维度就无关紧要了。
要提取数据也可以使用 { },例如
meanValues(yr) = mean(valuesforts{yr});
请记住,valuesforts 的每个单元格内的矩阵在分配时将具有与 ts 相同的膨胀。
或者,如果 TS 的大小始终相同,则预分配 valuesforts 为:
valuesforts = zeros(<number of years>,<expected length of ts>,3);
...
valuesforts(yr,:,:) = ts;
然后取决于你想用 valuesforts 做什么..重塑它或绘制它。
在最坏的情况下(不推荐),您可以让 valuesforts 随着每次循环迭代而增长。
初始化为空:
valuesforts=[];
然后将 ts 垂直附加到 valuesforts:
valuesforts = [valuesforts; ts];
这将为您提供一个包含 3 列和年数 * 每次循环迭代中 ts 中的行数的矩阵。
作为更大脚本的一部分,我想将来自 while 循环的数据存储在矩阵中。我想在新矩阵中保存 1738x3 的 COG_Ton_Av 矩阵的一部分。 COG_Ton_Av 在每个循环中都会发生变化,所以我想将结果存储在外部。我找到了多个关于如何将数据存储在向量中的条目,但没有找到关于矩阵的条目。我试过的是:
valuesforts= zeros(1000,3);
yr =1
while Qn>0
yindex = Gmhk*100
zindex = round(gs*100)
ts = (COG_Ton_Av ((zindex:yindex),:))
valuesforts(yr)=ts
yr = yr+1
end
我只是贴出了 while 循环的一部分以使问题更简单,我希望它足以回答问题。 尝试此操作时出现以下错误:
下标赋值维度不匹配。
cutoff_work14_priceescalation_and_stockpiling 中的错误(第 286 行) 值(年)=ts
该错误意味着 ts 与 valuesforts 的大小不同(并且它以 yr 作为向量进行索引。
如果 TS 的维度在循环的每次迭代中都不同,则使用单元格表示法:
valuesforts = cell(<number of years>);
...
valuesforts{yr} = ts;
那么 ts 的维度就无关紧要了。
要提取数据也可以使用 { },例如
meanValues(yr) = mean(valuesforts{yr});
请记住,valuesforts 的每个单元格内的矩阵在分配时将具有与 ts 相同的膨胀。
或者,如果 TS 的大小始终相同,则预分配 valuesforts 为:
valuesforts = zeros(<number of years>,<expected length of ts>,3);
...
valuesforts(yr,:,:) = ts;
然后取决于你想用 valuesforts 做什么..重塑它或绘制它。
在最坏的情况下(不推荐),您可以让 valuesforts 随着每次循环迭代而增长。 初始化为空:
valuesforts=[];
然后将 ts 垂直附加到 valuesforts:
valuesforts = [valuesforts; ts];
这将为您提供一个包含 3 列和年数 * 每次循环迭代中 ts 中的行数的矩阵。