Obtaining how many times a number is repeated (Matlab)

2 Ansichten (letzte 30 Tage)
Afluo Raoual
Afluo Raoual am 23 Mär. 2021
Kommentiert: Afluo Raoual am 23 Mär. 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

Antworten (1)

Jan
Jan am 23 Mär. 2021
Bearbeitet: Jan am 23 Mär. 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 Kommentare
Jan
Jan am 23 Mär. 2021
Bearbeitet: Jan am 23 Mär. 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 am 23 Mär. 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by