2012-07-18 60 views
2

我有两个单元阵列,其是混合的串/整数类型,例如:与混合数据类型比较单元一阳matlab的

a={'a';1;'b'} 
b={'b';1} 

我需要对它们进行比较和找到的索引中所述的B中的元素的所以在这种情况下,它会是3和2(因为'b'在A的第三个位置)。

我会做find(strcmpi(b,a)),但我将不得不将两个单元格数组转换为字符串数组,并且这不会非常有效(因为这两个数组都很长)。

我考虑过setxorismember但我还没有想出如何使用它们。

什么是这样的问题的'matlab'方式?

回答

2

使用一个循环,或者把它包起来使用arrayfun:

a={'a';1;'b'} 
b={'b';1} 
result = arrayfun(@(x) find(arrayfun(@(y) isequal(x,y),a),1,'first'),b) 
+1

+1:你不需要在'发现(在''first''关键字)'虽然... – 2012-07-18 16:36:57

+0

是的,我知道。为了清楚起见,我总是将它与第二个参数结合使用。 – 2012-07-18 18:43:43