Convert distance matrix to a table
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
  Adam Danz
    
      
 el 17 de Jun. de 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
    
      
 el 18 de Jun. de 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
Respuestas (1)
  Akira Agata
    
      
 el 18 de Jun. de 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 comentarios
Ver también
Categorías
				Más información sobre Tables en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


