【问题标题】:Matlab data: Finding average of each column in plotMatlab数据:查找图中每列的平均值
【发布时间】:2013-02-11 22:35:12
【问题描述】:

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

谢谢。

【问题讨论】:

  • 如果你有一个向量并且你想找到每一行的平均值,试试 mean(A, 2)。如果你只想找到最后一列的平均值,那么 mean(A(:, 5:end), 2)。

标签: matlab plot average


【解决方案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

【讨论】:

  • 谢谢!问题是我需要找到“每年”的平均值,而通过 mean(y1) 这是不可能的,因为它表示整个数据集的平均值,而与年份无关。
  • @RohitKulkarni 我已经更新了我的帖子,没有机会进行测试,但这应该可以满足您的需求。
【解决方案2】:

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

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

否则,您可以每年计算:

mean(y1(x==2005))

【讨论】:

  • 如果数据足够结构化,这里提到的第一个解决方案肯定是要走的路。
  • 谢谢!这些值是有序的,但它们每年都不同。我检查了@DennisJaheruddin 给出的方法,你工作得很好。
猜你喜欢
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 2017-10-28
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多