Matlab数据:求绘图中每列的平均值

Matlab数据:求绘图中每列的平均值,matlab,plot,average,Matlab,Plot,Average,我是一个使用MATLAB的初学者。我有17列数据,显示了7年期间的波高和风数据。 前4列分别为年(2005-2011)、月、日和小时。 接下来的专栏是各自的录音 我在这里找到了一个有用的脚本来绘制这些列 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

我是一个使用MATLAB的初学者。我有17列数据,显示了7年期间的波高和风数据。 前4列分别为年(2005-2011)、月、日和小时。 接下来的专栏是各自的录音

我在这里找到了一个有用的脚本来绘制这些列

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)。我必须找到每年的平均风速。 谁能帮帮我吗


谢谢。

当您绘制
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

如果每年都有相同数量的值,并且它们是有序的(例如,首先是2005年的所有值,然后是2006年的所有值…),则可以使用重塑:

y1 = reshape(y1,365,7); mean(y1)
否则,您可以为每年计算:

mean(y1(x==2005))

谢谢问题是,我需要找到“每年”的平均值,而这不可能通过平均值(y1)实现,因为它表示的是整个数据集的平均值,而与年份无关。@RohitKulkarni我已经更新了我的帖子,没有机会测试,但这应该可以满足您的需要。如果您有一个向量,并且希望找到每行的平均值,请尝试平均值(a,2)。如果你只想找到最后几列的平均值,那么就意味着(A(:,5:end),2)。如果数据的结构足够好,这里提到的第一个解决方案肯定是可行的。谢谢!数值是有序的,但每年都不同。我检查了@DennisJaheruddin给出的方法,你的效果非常好。