计算另一个单元格数组matlab中一个单元格数组中的项目

时间:2015-05-27 03:25:42

标签: arrays matlab cell

我有2个单元格数组,它们是“celldata”和“data”。它们都存储在里面。现在我想检查“celldata”中的每个元素是否在“数据”中?例如,celldata = {'AB'; '是'; 'BC'}和data = {'ABCD''BCDE''ACBE''ADEBC'}。我希望AB的预期输出为s = 3和v = 1,对于BE,s = 2和v = 2,对于BC,s = 2和v = 2,因为我只需要计算字符串的序列'celldata'

我写的代码如下所示。任何帮助肯定会受到赞赏。 我的代码:

s=0; support counter
v=0; violate counter
SV=[]; % array to store the support
VV=[]; % array to store the violate

pairs = ['AB'; 'BE'; 'BC']
%celldata = cellstr(pairs)
celldata = {'AB'; 'BE'; 'BC'}
data={'ABCD' 'BCDE' 'ACBE' 'ADEBC '} % 3 AB, 2 BE, 2 BC

for jj=1:length(data)
    for kk=1:length(celldata)

res = regexp( data(jj),celldata(kk) )

m = cell2mat(res);
e=isempty(m)  % check res array is empty or not
if e == 0
    s = s + 1;
    SV(jj)=s;
    v=v;
else
    s=s;
    v= v+1;
    VV(jj)=v;
end
    end
end

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的变量,s是子字符串ABAEBC未出现的单元格数量,v它是它的次数。如果这是准确的那么

v = cellfun(@(x) length(cell2mat(strfind(data, x))), celldata);
s = numel(data) - v;

给出

v = [1;1;3];
s = [3;3;1];