2013-02-26 239 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