2012-06-30 109 views
0

我有一个excel_1与4列(A,B,C,分数)与不同的组合。我还有另外一个有3列(A,B,C)的excel_2。我想按照A,B,C来找出分数。我试图使用Excel索引和匹配功能,但我仍然无法弄清楚。没有编码,它真的让我很难一一匹配...我可以知道如何在Matlab中编写代码吗?查找列和matlab匹配

例子:

excel_1 
99 5 35 12 
99 2 32 14 
97 5 13 94 
... 

excel_2 
97 5 13 
99 2 32 
... 

执行后的代码,

结果:

excel_2 
97 5 13 94 
99 2 32 14 
... 

非常感谢......

A = xlsread('excel_1.xlsx'); 
B = xlsread('excel_2.xlsx'); 

[~,J] = ismember(B,A(:,1:size(B,2)),'rows'); 
if any(J) 
    result = A(J,:); 
end 

??? Subscript indices must either be real positive integers or logicals. 

Error in ==> Untitled at 6 
    result = A(J,:);  

解决。 B和A之间不可能存在不可能。

回答

2

可能是你可以试试这个。

[~,J] = ismember(excel_2,excel_1(:,1:size(excel_2,2)),'rows'); 
if any(J) 
    result = excel_1(J,:); 
end 

然后

result = 

    97  5 13 94 
    99  2 32 14 
+0

我得到的错误???下标索引必须是真正的正整数或logicals.Error在==>无标题6结果= A(J,:); ...可能你知道是什么原因? –

+0

J返回正确的索引,但是,它不能转换为第4列值。我可以知道吗? –