Hello All, I have two vectors of size (100x1) named "groups" and "norms", groups vector contains labels such as
groups=[1 2 2 1 3 2 3]
and norms vector contains length of vectors that belongs to one of the groups.
norms=[0.4923 0.6023 0.5717 0.4296 0.5425 0.5101 0.5185]
Now I want to find the max value of norms in each group with their corresponding index position in norms vector. I have the following code which gets the max norm in each group but it does not return index.
maxs = accumarray(groups(:,1), norms(:,1), [], @max);
Any help will be appreciated. Thanks.

답변 (1개)

Rik
Rik 2018년 3월 8일

1 개 추천

Your current code doesn't return a maximum value for each group. The code below should do what you need.
groups=[1 2 2 1 3 2 3];
norms=[0.4923 0.6023 0.5717 0.4296 0.5425 0.5101 0.5185];
grouplist=unique(groups);
num=numel(grouplist);
maxs=zeros(num,1);
maxs_idx=zeros(num,1);
for idx=1:num
[maxs(idx),maxs_idx(idx)]=max(norms(groups==grouplist(idx)));
end

댓글 수: 2

iam
iam 2018년 3월 8일
Thanks for your response, but as I checked its not giving me the correct maximum values of each group.
Stephen23
Stephen23 2018년 3월 8일
편집: Stephen23 2018년 3월 8일
@iam: please show us what the required output is. Testing code is very difficult if the required output is not known to us.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

질문:

iam
2018년 3월 8일

편집:

2018년 3월 8일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by