2013-02-26 163 views
0

我是使用MATLAB的初學者。我有17個欄目的數據顯示了7年的波高和風速數據。 前4列分別是年份(2005-2011),月份,日期和小時。 接下來的列是相應的記錄。Matlab數據:在繪圖中找到每列的平均值

我在這裏找到了一個有用的腳本來繪製這些列。

fid = fopen('wam1.txt','r'); 
C = textscan(fid,'%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f','headerlines',4,'commentstyle','--'); 
fclose(fid); 
x = C{1}; y1 = C{5}; y2 = C{3}; 
plot(x,y1) 

現在,該圖包括(例如)Y軸上的風速和X軸上的年份(2005-2011)。而且我必須找出每年風速的平均值。 任何人都可以幫助我。

謝謝。

+1

如果你有一個載體,你想找到的每一行的平均嘗試的意思(A,2)。如果你想找到只有最後一列的平均值,那就意味着(A(:,5:結束),2)。 – Dan 2013-02-26 13:25:42

回答

1

由於您似乎繪製了y1的值,因此解決方案將非常簡單。

mean(y1) 

會給你y1的平均值。

如果您希望每年都這樣做,這將讓您循環使用這些年份並將平均值存儲在名爲result的矢量中。

count = 0; 
for t = unique(x) 
    count = count+1; 
    result(count) = mean(y1(x==t)); % Or just result(t) 
end 
result 
+0

謝謝!問題是我需要找到「每年」的平均值,並且不可能通過平均值(y1),因爲它表示整個數據集的平均值,而不考慮年份。 – 2013-02-26 13:13:59

+0

@RohitKulkarni我已更新我的帖子,沒有機會測試,但這應該做你需要的。 – 2013-02-26 13:30:35

1

如果有相同數量每年價值觀,他們是爲了(例如,第一,2005年所有的值,那麼對於2006年的所有值......),你可以使用重塑:

y1 = reshape(y1,365,7); mean(y1) 

否則,就可以計算出每一年:

mean(y1(x==2005)) 
+0

如果數據結構足夠,這裏提到的第一個解決方案肯定是要走的路。 – 2013-02-26 13:32:41

+0

謝謝!價值是有序的,但每年都不同。我檢查了@DennisJaheruddin給出的方法,你的工作很完美。 – 2013-02-26 13:44:37