Eliminated zero value in the matrix.
1 view (last 30 days)
Show older comments
I have this variable formatted as following:
>> dist
dist =
0 7.5000 15.0000 16.7705 21.2132 16.7705 15.0000 7.5000
7.5000 0 7.5000 10.6066 16.7705 15.0000 16.7705 10.6066
15.0000 7.5000 0 7.5000 15.0000 16.7705 21.2132 16.7705
16.7705 10.6066 7.5000 0 7.5000 10.6066 16.7705 15.0000
21.2132 16.7705 15.0000 7.5000 0 7.5000 15.0000 16.7705
16.7705 15.0000 16.7705 10.6066 7.5000 0 7.5000 10.6066
15.0000 16.7705 21.2132 16.7705 15.0000 7.5000 0 7.5000
7.5000 10.6066 16.7705 15.0000 16.7705 10.6066 7.5000 0
I want to obtain a 8x7 array because I want to eliminate all the 0 element rows by rows. The structure of the files is always the same with the 0 value on the main diagonal. How can I do this?
0 Comments
Accepted Answer
Matt Tearle
on 21 Feb 2014
Personally, I'd question whether this is a great idea. A distance matrix is supposed to be square and symmetric, with dist(j,k) representing the distance between points j and k. Removing those diagonal elements destroys that structure, and I don't see what it gains you. But if there's a good reason to go ahead, you could do:
n = size(dist,1);
dist(1:(n+1):end) = [];
dist = reshape(dist,n-1,n);
4 Comments
Matt Tearle
on 21 Feb 2014
@Walter: true, I shifted down instead of across. Add a transpose, I guess :) The 0 on the diagonal is a good point. But in that case, my personal preference would be to fill the diagonal with NaNs:
n = size(dist,1);
dist(1:(n+1):end) = NaN
min(dist)
(But I guess there are other cases where that would be annoying, too...)
@Francesco: I've added a comment on that other question about how my code works. But, no, I don't use the distances for that.
That said, if you find pairwise distances to be useful, and you have Statistics Toolbox, there's a function to do it for you: pdist. If you want the matrix form, use squareform as well:
coords = rand(8,2); % column 1 is x, column 2 is y
dist = squareform(pdist(coords));
More Answers (1)
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!