通过与另一个单元格比较来从单元格获取索引值

Index values from cell by comparing with another cell

我有 2 个单元格,BMB 是 nx1 单元格,M 是 nx2 单元格。 B 中的某些值是空白。其余同M{:,2}。像这样:

B=
'beta001.img'  
'beta002.img'  
[]  
[]  
[]  
'beta006.img'
[]  
...  

M=
67    'beta001.img'  
89    'beta002.img'  
34    'beta003.img'  
14    'beta004.img' 
15    'beta005.img' 
32    'beta006.img'  
...  

我想创建一个单元格 C,其中包含 M 的第一列中的值,但前提是第二列中的相应值与 B 中的相应值匹配。基本上,使用上面的例子,C 应该是:

67
89
32

我可以看到至少有两个选项。最简单的方法是对 B 和 M 进行 horzcat,然后删除所有包含空白的行。我试过了:

C=horzcat(B,M);
C=R(~cellfun('isempty',C));  

不幸的是,这没有用。由于我想学习如何使用 ismember,第二个选择是使用它来比较 B 和 M。有人可以帮助我吗?

您的方法已更正:

这将连接矩阵。然后提取没有任何空条目的行,然后提取结果的第二列。

C = horzcat(B,M);
C = C(~any(cellfun('isempty',C),2),:);
C = cell2mat(C(:,2)); 

但是您不需要连接元胞数组来实现您正在做的事情。

简化方法:

你可以只找到B不为空的行,然后取所述对应行的M的第一列。

isBnotEmpty = ~cellfun(@isempty, B);
C = cell2mat(M(isBnotEmpty,1));