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
我是运行一个用于计算太阳辐射的双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