Borrar filtros
Borrar filtros

Question about finding the number of times an element appears in an array

1 visualización (últimos 30 días)
Can someone explain why/how this code works in creating an array B which corresponds to the number of each integer from 1-9 in array A?
c=[1:9]
B=sum(A(:)==c, 1)
  2 comentarios
Lewis
Lewis el 4 de Nov. de 2021
E.g. for A=[1 2 4] it will create B = [1 1 0 1]
Rik
Rik el 4 de Nov. de 2021
Combining unique with histc (or histcounts) might be either safer, or more performant for larger arrays than this setup.

Iniciar sesión para comentar.

Respuesta aceptada

Chris
Chris el 4 de Nov. de 2021
Editada: Chris el 4 de Nov. de 2021
A = randi(9,2)
A = 2×2
8 8 5 9
A(:) formats A in a column vector.
A(:)
ans = 4×1
8 5 8 9
A(:)==c compares the column to each element of c (possible because the dimensions of a and c are orthogonal), returning an nx9 matrix with ones where the comparison is true.
A(:)==1:9
ans = 4×9 logical array
0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1
Summing across dimension 1 (the default):
B=sum(A(:)==1:9)
B = 1×9
0 0 0 0 1 0 0 2 1

Más respuestas (0)

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by