Obtaining how many times a number is repeated (Matlab)

2 vues (au cours des 30 derniers jours)
Afluo Raoual
Afluo Raoual le 23 Mar 2021
Commenté : Afluo Raoual le 23 Mar 2021
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

Réponses (1)

Jan
Jan le 23 Mar 2021
Modifié(e) : Jan le 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 commentaires
Jan
Jan le 23 Mar 2021
Modifié(e) : Jan le 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?
Afluo Raoual
Afluo Raoual le 23 Mar 2021
Thank you so much. It works now with this simple idea. I thought it can just solved with for loop.
I appreciate your help as always.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by