Convert distance matrix to a table
    3 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
How can I convert the output matrix Z to a table with the following structure?
Object1 Object2 Distance
1       2       0.2954
1       3       1.0670
2       1       0.2954
2       3       0.9448
3       1       1.0670
3       2       0.9448
Code:
rng('default') % For reproducibility
X = rand(3,2);
D = pdist(X)
Z = squareform(D)
7 commentaires
  Adam Danz
    
      
 le 17 Juin 2019
				Here's how to convert a matrix to a table and add column names. 
m =[1       2       0.2954
    1       3       1.0670
    2       1       0.2954
    2       3       0.9448
    3       1       1.0670
    3       2       0.9448];
t = array2table(m,'VariableNames', {'Object1','Object2','Distance'})
  Akira Agata
    
      
 le 18 Juin 2019
				How about making a graph object?
rng('default') % For reproducibility
X = rand(3,2);
D = pdist(X);
Z = squareform(D);
G = graph(Z);
Then, G.Edges becomes almost what you want to obtain, like:
>> G.Edges
ans =
  3×2 table
    EndNodes    Weight 
    ________    _______
     1    2      0.2954
     1    3       1.067
     2    3     0.94476
Réponses (1)
  Akira Agata
    
      
 le 18 Juin 2019
        Or, if you want the full list of (from, to, distance) set, how about the following?
rng('default') % For reproducibility
X = rand(3,2);
D = pdist(X);
Z = squareform(D);
[row,col] = find(Z);
d = arrayfun(@(r,c) Z(r,c),row,col);
T = table(row,col,d,'VariableNames',{'Object1','Object2','Distance'});
T = sortrows(T);
The result is:
>> T
ans =
  6×3 table
    Object1    Object2    Distance
    _______    _______    ________
       1          2        0.2954 
       1          3         1.067 
       2          1        0.2954 
       2          3       0.94476 
       3          1         1.067 
       3          2       0.94476 
0 commentaires
Voir également
Catégories
				En savoir plus sur Tables 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!


