How can turn two indexing vectors into a corresponding matrix that counts how many locations that point has been hit?

1 vue (au cours des 30 derniers jours)
Basically if I have two corriponding vectors, x and y say,
x = [1;1;2;1];
y = [1;1;1;2];
I want to return a matrix that represents how many times that point was referenced in the indexing matrix. For our example it would be,
2 1
1 0
Because there are 2 (1, 1) in the indexing vectors so a 2 is displayed in the matrix and because (2,2) was never in the vectors, it displays a zero
I've tried
matrix = zeros(2, 2);
matrix(x, y) = matrix(x, y) + 1
but it returns
1 1
1 1
How can I turn two vectors like these into a matrix that shows me how many times the combomation of x and y shows up in the vectors.

Réponse acceptée

BobH
BobH le 4 Mar 2020
The diagonal of a matrix is those elements whose subscripts are (1,1), (2,2), etc
s = sparse(x, y, 1)
s =
(1,1) 2
(2,1) 1
(1,2) 1
full(s)
ans =
2 1
1 0
d = full(diag(s))
d =
2
0
  1 commentaire
Steve Le
Steve Le le 4 Mar 2020
Thank you so much! This worked perfectly; I was trying to do stuff with scatter too but this was much simpler.

Connectez-vous pour commenter.

Plus de réponses (1)

Steven Lord
Steven Lord le 4 Mar 2020
See the histcounts2 function.

Catégories

En savoir plus sur Data Distribution Plots dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by