2015-01-27 36 views
1

假設我有以下代碼在程序中使用的字符串的單元陣列的

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

回答

2

只需使用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))); 
相關問題