# Group array in a cell according to their size

1 次查看（过去 30 天）
kix 2020-7-5

Hi everyone!
I've got a cell wich contains array like this : A={[1 2 3 4] [4 5 6 9] [1 2 3] [7 8 9] [1 2] [3 4]}
and I would like to group the arrays in this cell according to their size and get the indexes where they have been found in A and have the following result :
expected_result={{[1 2 3 4] [4 5 6 9]} {[1 2 3] [7 8 9]} {[1 2] [3 4]}}
idx_in_A={[1 2] [3 4] [5 6]}

### 采纳的回答

A direct implementation could be done like this:
A={[1 2 3 4] [4 5 6 9] [1 2 3] [7 8 9] [1 2] [3 4]};
sizes= [];
for idx=1:length(A)
Vsize = length(A{idx});
if ~ismember(Vsize,sizes)
sizes = [sizes,Vsize];
Pos = find(ismember(sizes,Vsize));
idx_in_A{Pos} = idx;
else
Pos = find(ismember(sizes,Vsize));
idx_in_A{Pos} = [idx_in_A{Pos},idx];
end
end
expected_result = cell(length(idx_in_A),1);
for idx= 1:length(idx_in_A)
expected_result{idx} = {A{idx_in_A{idx}}};
end
kix 2020-7-5
thank you !

### 更多回答（1 个）

Sumeet Singh 2020-7-5
You can use one containers.Map to group same sized arrays and another for storing the indices.
kix 2020-7-5
Thank you !

### 类别

Help CenterFile Exchange 中查找有关 Data Types 的更多信息

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by