2016-05-16 144 views
1

我的代码:如何使用循环将值存储到向量中?

for years = 1900:2000 
    temp = T(year == years & month == 1); 
    mt = mean(temp); 
    fprintf('The mean of January through 1900-2000 is %2.3f\n', mt) 
end 

这将打印我通过这些年的月平均气温。

但我想将这些值存储在一个向量中,当我尝试在for循环中添加mt = [mt]时,它只给出最后的平均值,同样在我的工作空间中,mt仅等于最后一个平均值被打印。如果任何人都可以帮助它将不胜感激。谢谢。

回答

0

什么你想要做的是

mt = [mt, mean(temp)] 

这将正常工作。然而,在MATLAB中增长矩阵时,这是一种效率低下的方法。

一种更好的方式走的是前手预分配矩阵状

years = 1900:2000; 
mt = zeros(numel(years),1) 
for yearnum = 1:numel(years); 
    temp = T(year == years(yearnum) & month == 1); 
    mt(yearnum) = mean(temp); 
end 
fprintf('The mean of January through 1900-2000 is %2.3f\n', mean(mt)) 

另外请注意,我已经采取了你的fprintf线圈外。

在MATLAB中更好的方法是使用矢量化方法而不是循环,但这取决于矩阵的结构T

+0

谢谢,我明白了,你的意思是性能方面效率低下吗? – Jay

+0

@ user5983828是的,性能明智。查找循环中的矩阵并在MATLAB中预分配,你会发现很多解释。 – Dan

+0

好吧,有道理,但有一个问题,nume1的目的是什么? – Jay

相关问题