Count the occurence certain elements based on condition in next column

Hello.
I have a matrix consists of A = [ 1 3 2 2 4 1 2 3 4 1 3] and B = [0 0 -3 0 2 1 4 0 0 -2 0]
How can I determine the occurence of element in A when corresponding value in B is not 0:
C = [
1 2
2 2
3 0
4 1]
Please help me..
Really appreciate it!!

 Accepted Answer

More Answers (1)

Try this
A = [1 3 2 2 4 1 2 3 4 1 3];
B = [0 0 -3 0 2 1 4 0 0 -2 0];
C = [1:max(A); histcounts(A(B~=0), 'BinMethod', 'integers')].'

9 Comments

Woww.. Thank you very much. Exactly what I need!!
Hi..
Is there any limitation for histcounts function? because when I used it in larger data (near 2 x 60M) and then it was found that unique element (vector A) was 360 data, the result of histcounts was only 300 data
Can you share your data in a .mat file?
Following solution will be more robust
A = dataPD(1,:);
B = dataPD(2,:);
C = [1:max(A); histcounts(A(B~=0), 0.5:1:max(A)+0.5)].'
Attention A of your data contains 82335 0s and they are discarded from counting

Sign in to comment.

Categories

Community Treasure Hunt

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

Start Hunting!