Finding repeating values in an array
古いコメントを表示
Hello all,
I have 2 arrays
A = [ 0.3 0.6 1 0.6 0.3]
B = [ 3 2 3 6 11 ]
I need to find the position of same elements in B and then the max value of the elements on the corresponding position in A.
In this case the number 3 is repeated in B on positions 1 and 3 so the corresponding values in A are 0.3 and 1 => max( 0.3 , 1 ) = 1
The end resault should be:
A1 = [ 0.6 1 0.6 0.3 ]
B1 = [ 2 3 6 11 ]
Any help is appreciated
3 件のコメント
andrea
2020 年 4 月 25 日
maybe :
pos_in_b = B == 3 ;
max ( A ( pos_in_b) )
dpb
2020 年 4 月 25 日
The find part is easy enough, the logic of how to build the A1, B1 vectors from A,B and the lookups escapes me entirely, though...???
Vladimir Kostic
2020 年 4 月 25 日
編集済み: Vladimir Kostic
2020 年 4 月 25 日
採用された回答
その他の回答 (2 件)
You can use the outputs of the unique function to achieve this.
A = [ 0.3 0.6 1 0.6 0.3];
B = [ 3 2 3 6 11];
[B1,~,ind]=unique(B);
A1=accumarray([ones(numel(A),1) ind],A(:),[],@max);
A1
B1
2 件のコメント
Vladimir Kostic
2020 年 4 月 25 日
Rik
2020 年 4 月 27 日
A bit late, but here you go, no loops required.
andrea
2020 年 4 月 25 日
0 投票
maybe i do not understand the problem but anyway
[val, ind] = min ( A ( pos_in_b) )
A(ind) = []
カテゴリ
ヘルプ センター および File Exchange で Matrices and Arrays についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!