程序中字符串元胞数组的使用
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)));
假设我有以下代码
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)));