Eliminated zero value in the matrix.
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Matt Tearle
le 21 Fév 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 commentaires
Matt Tearle
le 21 Fév 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));
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices 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!