Obtaining how many times a number is repeated (Matlab)
2 views (last 30 days)
Show older comments
Dear members;
I have vector S=[0 1 1 0 1] in which the position L of ones is
L=find(S==1); So L=[2,3,5]
I have also Bi (i=1:5) in each Bi I have the position of ones like this :
B1=[1,2,5,6,7,8] B2=[1,3,4,6,8,10] B3=[2,4,5,8,9,10] B4=[1,3,5,7,9,10] B5=[2,3,4,6,7,9]
Because L=[2,3,5] I have to go to B2, B3 and B5 and obtaining how many times each number from 1 to 10 is repeated
For example from B2, B3 and B5 (number 1 is repeated just once in B2) and (number 2 is repeated twice in B3 and B5), (number 3 is repeated twice in B2 and B5), (number 4 is repeated thrice in B2, B3 and B5) .... etc until number 10.
So please help me how can I program this in Matlab
Thank you
Answers (1)
Jan
on 23 Mar 2021
Edited: Jan
on 23 Mar 2021
Do not use indices hidden in the name of the variables, but indices of arrays:
B{1} = [1,2,5,6,7,8];
B{2} = [1,3,4,6,8,10];
B{3} = [2,4,5,8,9,10];
B{4} = [1,3,5,7,9,10];
B{5} = [2,3,4,6,7,9];
S = [0 1 1 0 1];
BS = cat(2, BS{S == 1});
D = histcounts(BS, 'BinMethod', 'integers')
4 Comments
Jan
on 23 Mar 2021
Edited: Jan
on 23 Mar 2021
@Afluo Raoual: Now your input look different.
H = [1 1 0 0 1 1 1 1 0 0;
1 0 1 1 0 1 0 1 0 1;
0 1 0 1 1 0 0 1 1 1;
1 0 1 0 1 0 1 0 1 1;
0 1 1 1 0 1 1 0 1 0];
S = [0 1 1 0 1];
B = sum(H(S == 1, :), 1);
Why do you want to waste time with a loop? Do you really need the indices obtained by FIND?
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!