2016-05-16 71 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

相關問題