Delete Cells from Cell Array, when size is less than 50% of biggest cell

7 次查看(过去 30 天)
Hey guys, I have an Cell Array, with cells only containing nx2 matrices.
>> a = {[1,2;3,4;5,6;7,8],[9,10;11,12],[13,14;15,16;17,18]}
>> celldisp(a)
a{1} =
1 2
3 4
5 6
7 8
a{2} =
9 10
11 12
a{3} =
13 14
15 16
17 18
I am tying to find a way to only keep thoose Cells from the Cell Array which size (number of rows) is greater than 50% of the biggest Cell, so that my output looks like this:
>> a = {[1,2;3,4;5,6;7,8],[13,14;15,16;17,18]}
a{1} =
1 2
3 4
5 6
7 8
a{2} =
13 14
15 16
17 18

采纳的回答

KALYAN ACHARJYA
KALYAN ACHARJYA 2021-1-20
编辑:KALYAN ACHARJYA 2021-1-20
Here one way:
The given cell data
a={[1,2;3,4;5,6;7,8],[9,10;11,12],[13,14;15,16;17,18]}
Check data
a =
1×3 cell array
{4×2 double} {2×2 double} {3×2 double}
Get the rows ('1') of all cell elements, if columns, use '2'
cell_sizes=cellfun('size',a,1);
Get the max size of rows and 50% of the row size
max_size=max(cell_sizes);
th=max_size*0.5;
Apply the condtion for rows more than 50% of max size (Get the indices, those are lesser or equal)
idx=find(cell_sizes<=th);
Assign all cell elements with particular indices idx with blanks ([])
a(idx)=[];
Remove all those are blanks cell elements
a(cellfun('isempty',a)) = []
Result:
a =
1×2 cell array
{4×2 double} {3×2 double}
  3 个评论

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by