Matlab:将所有值叠加在double for for循环中

时间:2018-02-13 11:43:53

标签: matlab for-loop nested-loops

我正在运行一个双循环计算太阳辐射,如:

for b=1:365      %amount of days
   for n=1:24    %amount of hours
   solar(b,n)=sin(ht(b,n))+...
   end
end

然而,我不是创建365x24 martrix,而是想要一个8760x1阵列,其中所有值都以1个colomn相互绘制。重要的是,这在for循环中发生,因为在此循环中需要对数组进行一些其他计算。

谢谢!

1 个答案:

答案 0 :(得分:2)

MATLAB矩阵本质上是可访问的,就好像它们是linear indexing的一维向量一样。矩阵元素的线性顺序按维度的升序排列,因此,为了使您的矩阵按小时顺序,然后按天计算,只需将您索引的维度交换为solar

solar(n,b)=sin(ht(b,n))+...

如果您明确需要8760x1阵列,则可以将其作为solar(:)获取。但是,如果您只需要在单个循环中迭代所有元素,则可以依赖线性索引而无需重新整形矩阵:

for n = 1:numel(solar)
    % doSomething(solar(n));
end