1

MATLABで次の問題があります。

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

私は簡単に参加できますがf1f2

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

f1で同じことf3はできません

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

次のエラーが表示されます。

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はほとんどの行名を持っていますf1が、必ずしもすべてではありません。実際、理想的なのは、両方のテーブルで共通の行を保持することです。あなたの意見では、これをどのように行うことができますか?

フィードバックをお寄せいただきありがとうございます

4

1 に答える 1

0

最初のテーブル行名が 2 番目のサブセットである限り、共通の行を持つ新しいテーブルが得られます。

MATLAB ドキュメントから:

値 'RowNames' を指定すると、 join は A の行名と B の行名をキーとして使用します。この場合、A のすべての行に対して B に行が存在する必要があります。

次の表を検討してください。

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'});

最初のテーブルは 2 番目のテーブルのサブセットであるため、次の結合が機能します。

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

ただし、これは機能しません。

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

エラーが返されます:「キーとして使用する場合、両方のテーブルに同じ行名が必要です」。

したがって、あなたの場合、テーブルの順序を反転するとうまくいくと思います:

f3n = join(f3,f1,'Keys','RowNames');
于 2016-07-31T21:51:38.660 に答える