在MATLAB中连接表时保持相似的行



我在MATLAB中遇到以下问题。

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

而我可以很容易地将f1f2与结合起来

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

我不能对中的f1f3做同样的操作

 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相同的大多数行名,但不一定全部。实际上,理想的做法是保留两个表中的公共行。在你看来,怎么能做到这一点?

感谢您的反馈

只要第一个表的行名是第二个表的子集,您就会得到一个具有公共行的新表。

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

以下联接将起作用,因为第一个表是第二个表的子集:

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

相关内容

  • 没有找到相关文章

最新更新