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
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!