假设我有以下代码
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];
(查找包含向量B的至少一个元素的单元格A的向量:Divakar Answer)
R = A(arrayfun(@(n) any(ismember(B,A{n})),1:numel(A)));
我的印象是第二个代码无法识别A !!!
答案 0 :(得分:2)
只需使用str2num(A{n})
将A
的每个单元格转换为数字形式:
R = A(arrayfun(@(n) any(ismember(B,str2num(A{n}))),1:numel(A)));
以上以字符串形式显示结果,因为A{n}
转换为ismember
内的数字,但A
保留为字符串形式。如果您希望以数字形式显示结果,请首先转换A
,然后将您的(Divakar' s)原始行应用于转换后的A
:
A_num = cellfun(@str2num, A, 'uniformoutput', 0);
R = A_num(arrayfun(@(n) any(ismember(B,A_num{n})),1:numel(A)));