在程序中使用Cell数组的字符串

时间:2015-01-27 00:02:36

标签: arrays string matlab cell-array

假设我有以下代码

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 !!!

1 个答案:

答案 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)));