How can turn two indexing vectors into a corresponding matrix that counts how many locations that point has been hit?
1 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
BobH
2020-3-4
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 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Distribution Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!