查找矩阵内的值组的平均值

use*_*384 1 indexing matlab matrix mean

我试图在矩阵列中取选择值的平均值,通过它们在不同列中的值来选择它们.

例如:

X=[1950     1;
   1950     2;
   1950     3;
   1951     1;
   1951     5;
   1952     1]
Run Code Online (Sandbox Code Playgroud)

我想取每年值的平均值 - 实际上,选择具有相同列1值的值,然后取相应列2值的平均值.因此,平均值1950将是2,平均值1951将是1.我可以通过为每年值创建一个向量然后取整个向量的平均值来手动完成此操作,但这对于更大量的数据来说是不切实际的.每年的数据点数量各不相同,所以我认为我不能使用重塑来实现这一点.

Lui*_*ndo 6

你想要accumarray:

[~, ~, ii ] = unique(X(:,1));
result = accumarray(ii, X(:,2), [], @mean);
Run Code Online (Sandbox Code Playgroud)

我建议你仔细阅读文档,accumarray看看它是如何工作的.它是一个非常强大和灵活的功能.