在程序中使用的字符串的单元阵列的
问题描述:
假设我有以下代码在程序中使用的字符串的单元阵列的
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)));
我印象第二代码不能识别! !
答
只需使用str2num(A{n})
到A
每个单元转换回数字形式:以上
R = A(arrayfun(@(n) any(ismember(B,str2num(A{n}))),1:numel(A)));
给出结果字符串形式,因为A{n}
被转换成数字内ismember
但A
留在字符串形式。如果你想要的结果以数字形式,先转换A
,然后你(Divakar的)原线适用于转换A
:
A_num = cellfun(@str2num, A, 'uniformoutput', 0);
R = A_num(arrayfun(@(n) any(ismember(B,A_num{n})),1:numel(A)));
好,'B'是一个数字,'A {N}'是一个字符串。当然'ismember'将全部为'false' – 2015-01-27 00:21:38
@LuisMendo:我知道,但我很惭愧地说我无法解决这个问题! – bzak 2015-01-27 00:25:46
哦,我明白了。等一下 – 2015-01-27 00:31:59