matlab怎么根据max返回值[max,index]构建矩阵列最大值矩阵,其他为0

matlab怎么根据max返回值[max,index]构建矩阵列最大值矩阵,其他为0
例如有一个矩阵
a =
5 4 1 6
2 1 8 9
2 6 7 7
则[max,index] = max(a);返回
max =
5 6 8 9;

index =
1 3 2 2;
有没有简单的方法构建矩阵(列最大值矩阵)
即构建矩阵为
5 0 0 0
0 0 8 9
0 6 0 0

第1个回答  2014-08-25
A=[5 4 1 6;
2 1 8 9;
2 6 7 7];

[m,i]=max(A); % 求各列最大值
M=repmat(m,size(A,1),1); % 按行复制最大值和原矩阵同维数
A(A<M)=0 % 置各列比最大值小的数为零本回答被提问者采纳
第2个回答  2014-08-25
a =[5 4 1 6
2 1 8 9
2 6 7 7];
[maxv,index] = max(a);
b=zeros(size(a));
b(sub2ind(size(a),index,1:size(a,2)))=maxv;

>> b

b =

5 0 0 0
0 0 8 9
0 6 0 0
相似回答