, , , , 2D- accumarray. accumarray , , , . , , , , accumarray , .
cell2mat, 2D-, , accumarray . , , , , - , accumarray . , ID 4, 3 5, 6 5 7 ( ). 7, accumarray , ID 1 ID 7 1. , , - accumarray .
, , , .... :
%
A{1,1}=[1 2;2 4];
A{1,2}=[2 3 5;8 5 6];
A{1,3}=[7;8];
%
B = cell2mat(A).';
%
out = accumarray(B(:,1), B(:,2), [], @(x) {sort(x)});
%
IDs = num2cell((1:numel(out)).');
out = [IDs out];
%
ind = cellfun(@isempty, out(:,2));
out(ind,:) = [];
:
out =
[1] [ 2]
[2] [2x1 double]
[3] [ 5]
[5] [ 6]
[7] [ 8]
>> celldisp(out(2,:))
ans{1} =
2
ans{2} =
4
8
, 2D-, , , , - , , . - , :
%
A{1,1}=[1 2;2 4];
A{1,2}=[2 3 5;8 5 6];
A{1,3}=[7;8];
A{2,1}=[1 2;2 4];
A{2,2}=[1;7];
%
out = cell(size(A,1),1);
for idx = 1 : size(A,1)
%
B = cell2mat(A(idx,:)).';
%
out{idx} = accumarray(B(:,1), B(:,2), [], @(x) {sort(x)});
%
IDs = num2cell((1:numel(out{idx})).');
out{idx} = [IDs out{idx}];
%
ind = cellfun(@isempty, out{idx}(:,2));
out{idx}(ind,:) = [];
end
:
>> out{1}
ans =
[1] [ 2]
[2] [2x1 double]
[3] [ 5]
[5] [ 6]
[7] [ 8]
>> out{2}
ans =
[1] [2x1 double]
[2] [ 4]
>> celldisp(out{1}(2,:))
ans{1} =
2
ans{2} =
4
8
>> celldisp(out{2}(1,:))
ans{1} =
1
ans{2} =
2
7