2016-07-31 10 views
1

Ich habe das folgende Problem in MATLAB.Behalten Sie ähnliche Zeilen, wenn Sie Tabellen verbinden MATLAB

f1 [4757*256] table 
f2 [4757*512] table 
f3 [14073*1024] table 

Während ich leicht f1 und f2 mit

f1n = join(f1,f2,'Keys','RowNames'); 
beitreten können

Ich kann nicht das gleiche tun mit f1, f3 in

f3n = join(f1,f3,'Keys','RowNames'); 

und Ich erhalte den folgenden Fehler:

Both tables must have the same row names when using 
them as the key. 
Error in fuse_LL_GenreTag_features (line 33) 
F3new = join(f1,f3,'Keys','RowNames'); 

f3 hat die meisten Zeilennamen wie f1, aber nicht unbedingt alle. In der Tat ist es ideal, die Zeilen zu behalten, die in beiden Tabellen üblich sind. Wie kann dies Ihrer Meinung nach getan werden?

Vielen Dank für Ihre Feedbacks

Antwort

0

Solange die erste Zeile Namen Tabelle eine Teilmenge der zweiten ist, erhalten Sie eine neue Tabelle mit den gemeinsamen Reihen erhalten.

From MATLAB docs:

If you specify the value 'RowNames', then join uses the row names of A and row names of B as keys. In this case, there must be a row in B for every row in A.

Betrachten Sie diese Tabellen:

f1 = array2table(zeros(3,4),'RowNames',{'a','b','c'}); 
f2 = array2table(zeros(3,5),'RowNames',{'a','d','c'}); 
f3 = array2table(zeros(5,5),'RowNames',{'a','e','c','d','b'}); 

folgende arbeiten beitritt, da die erste Tabelle ist eine Teilmenge der zweiten ist:

f1n = join(f1,f3,'Keys','RowNames'); 
f2n = join(f2,f3,'Keys','RowNames'); 

jedoch diese funktioniert nicht:

und gibt einen Fehler zurück: "Beide Tabellen müssen dieselben Zeilennamen haben, wenn sie als Schlüssel verwendet werden".

in Ihrem Fall also, glaube ich, dass die Reihenfolge der Tabelle Flipping funktionieren soll:

f3n = join(f3,f1,'Keys','RowNames'); 
+0

@yas yasi ist das Ihr Problem löst? Wenn nicht, warum? – EBH

Verwandte Themen