如何在matlab中找到一组细胞的平均值?

时间:2016-06-23 16:05:21

标签: matlab

我有一个实验结果,其中参与者以随机顺序在5个不同条件(自变量)中给出0-9(因变量)的评级。 我得到类似于这个

的数字数组
ratings = [ 5 7 2 4 8 7 6 3 5 6]   
level   = [ 1 5 3 3 2 4 5 4 1 2]

我想找到我实验的每个级别的平均评分,所以我最终可以绘制为散点图。有人能指出我如何做到这一点吗?

2 个答案:

答案 0 :(得分:1)

如果您想计算每个级别的平均评分,可以使用accumarray执行此操作。 accumarray将执行的操作是按level中相应的值对小组评分进行评分。然后,它将指定为第四个输入的函数应用于每个组。在您的情况下,我们使用@mean来简单计算所有具有相同level值的评分的平均值。

accumarray(level(:), ratings(:), [], @mean);

%        5
%        7
%        3
%        5
%      6.5

答案 1 :(得分:1)

我会选择accumarray解决方案。但只是为了多样性,这也有效:

result = nonzeros(sparse(level,1,ratings))./nonzeros(sparse(level,1,1));