我有一个单元格数组,它是100x1,变量名是CellA。正如您将从附加的png文件中看到的那样,单元格数组在100个不同的单元格中包含各种大小的矩阵。
我想提取这些数据。实际上,我试图找到每个单元格中的唯一元素的数量及其频率。下面是我的代码,它会出现尺寸错误:
for i=1:length(CellA)
if isempty(CellA{i})
continue;% do nothing
else
unqmz(i,:) = unique(CellA{i})';
countmz(i,:) = histc(CellA{i}, unqmz(i))';
end
最终,我想绘制每个不同单元阵列的计数与唯一编号,其中该单元的总计数超过预定值。例如)4
答案 0 :(得分:1)
看看这是否适合你 -
%// Get result data into unqmz and countmz
unqmz = cell(numel(CellA),1);
countmz = cell(numel(CellA),1);
for ii=1:numel(CellA)
if isempty(CellA{ii})
continue;% do nothing
else
unqmz(ii) = {unique(CellA{ii})'} %//'
countmz(ii) = {histc(CellA{ii}, cell2mat(unqmz(ii)))'} %//'
end
end
%// Count of number of unique numbers in each cell
count_uniqs = cellfun(@numel,unqmz);
%// Plot (assuming you want to plot everything in one figure window)
figure,
for k = 1:size(countmz,1)
if count_uniqs(k)>4
plot(cell2mat(unqmz(k)),cell2mat(countmz(k)),'x')
hold on
end
end
答案 1 :(得分:1)
你也可以这样做:
unqmz = cellfun(@unique, CellA, 'uni', 0);
countmz = arrayfun(@(n) histc(CellA{n},unqmz{n}), 1:numel(CellA), 'uni', 0).';