Matlab:在双for循环中将所有值堆叠在一起

Matlab: stack all values under each other in double for loop

我是运行一个用于计算太阳辐射的双for循环,类似于:

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

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

谢谢!

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

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

如果您明确需要 8760x1 阵列,则可以将其作为 solar(:) 获取。但是,如果您只需要在一个循环中遍历所有元素,您可以依靠线性索引而不用重塑矩阵:

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