在程序中使用的字符串的单元阵列的

问题描述:

假设我有以下代码在程序中使用的字符串的单元阵列的

mc = {[2 5],[2 5],[8 9 2],[33 77 4],[102 6],[110 99],[2 5]} 

Identifying uniques in a cell array:Jonas Answer):

%# convert to strings 
mcs = cellfun(@(x)(mat2str(x)),mc,'uniformoutput',false); 

%# run unique 
[uniqueCells,idxOfUnique,idxYouWant] = unique(mcs); 

fileName = ['C:\Users\MATLAB\matrice_Result.mat']; 
save(fileName,'uniqueCells'); 

加载结果和使用它作为一个单元,能我这样做?

load('C:\Users\MATLAB\matrice_Result.mat'); 
A = uniqueCells; 

B = [5 77 41 66 7]; 

(查找小区A的包含载体B中的至少一种元素的载体:Divakar Answer

R = A(arrayfun(@(n) any(ismember(B,A{n})),1:numel(A))); 

我印象第二代码不能识别! !

+0

好,'B'是一个数字,'A {N}'是一个字符串。当然'ismember'将全部为'false' – 2015-01-27 00:21:38

+0

@LuisMendo:我知道,但我很惭愧地说我无法解决这个问题! – bzak 2015-01-27 00:25:46

+0

哦,我明白了。等一下 – 2015-01-27 00:31:59

只需使用str2num(A{n})A每个单元转换回数字形式:以上

R = A(arrayfun(@(n) any(ismember(B,str2num(A{n}))),1:numel(A))); 

给出结果字符串形式,因为A{n}被转换成数字内ismemberA留在字符串形式。如果你想要的结果以数字形式,先转换A,然后你(Divakar的)原线适用于转换A

A_num = cellfun(@str2num, A, 'uniformoutput', 0); 
R = A_num(arrayfun(@(n) any(ismember(B,A_num{n})),1:numel(A)));