我正在运行一个双循环计算太阳辐射,如:
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循环中发生,因为在此循环中需要对数组进行一些其他计算。
谢谢!
答案 0 :(得分:2)
MATLAB矩阵本质上是可访问的,就好像它们是linear indexing的一维向量一样。矩阵元素的线性顺序按维度的升序排列,因此,为了使您的矩阵按小时顺序,然后按天计算,只需将您索引的维度交换为solar
:
solar(n,b)=sin(ht(b,n))+...
如果您明确需要8760x1阵列,则可以将其作为solar(:)
获取。但是,如果您只需要在单个循环中迭代所有元素,则可以依赖线性索引而无需重新整形矩阵:
for n = 1:numel(solar)
% doSomething(solar(n));
end