我有2个细胞, B 和 M 。 B 是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的第1列中的值,但前提是第二列中的相应值与B中的值相匹配。基本上,通过上面的示例, C 应该是:
67
89
32
我可以看到至少有两种选择。最简单的是做一个B和M的horzcat然后去除所有包含空白的行。我试过了:
C=horzcat(B,M);
C=R(~cellfun('isempty',C));
不幸的是,这不起作用。由于我想学习如何使用ismember,第二种选择是使用它来比较B和M.可以有人帮助我吗?
答案 0 :(得分:1)
这连接了矩阵。然后提取行,其中没有任何空条目,然后是结果的第二列。
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));