程序中字符串元胞数组的使用

The use of Cell array of strings in a program

假设我有以下代码

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 的矢量:

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

我的印象是第二个代码不认识A!!!

只需使用 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)));