对于给定的矩阵Z
并假设第一列引用索引值,是否可以根据第一列Z(:,2:3)
中的索引值找到Z(:,1)
的均值。
Z = [1 3 4
2 7 8
1 3 9
3 4 4
1 5 7]
那么如何循环Z
来找到索引值为1的相应行的平均值(在第一列中),即找到Z1
的平均值
Z1 = 3 4
3 9
5 7
任何人都可以通过解释如何做到这一点来帮忙吗?
答案 0 :(得分:3)
这应该可以解决问题:
mean(mean(Z(Z(:,1)==1,2:3)))
答案 1 :(得分:2)
怎么样:
mean([accumarray(Z(:,1), Z(:,2),[],@mean), accumarray(Z(:,1), Z(:,3),[],@mean)]')'
它为您提供与每个数字相对应的平均值。即第一行的结果是与1
对应的行的平均值,第二行是2
等的行
答案 2 :(得分:2)
Bsxfun
方法 -
Zc = [Z(:,1) mean(Z(:,[2 3]),2)]
ind1 = bsxfun(@eq,Zc(:,1),min(Zc(:,1)):max(Zc(:,1)))
mean_values = sum(bsxfun(@times,ind1,Zc(:,2)))./sum(ind1,1)
输出 -
mean_values =
5.1667 7.5000 4.0000
答案 3 :(得分:2)
为第1列中的每个索引执行此操作,一次全部:
>> accumarray(repmat(Z(:,1),size(Z,2)-1,1), reshape(Z(:,2:3),[],1), [], @mean)
ans =
5.1667
7.5000
4.0000