Finding arrays above threshold value

3 views (last 30 days)
Manny Kins on 16 Apr 2019
Commented: Manny Kins on 17 Apr 2019
I have a struct AT.AX
AX has the following values:
1x370 double
1x1007 double
1x3957 double
1x6309 double
1x1648 double
1x2032 double
1x1173 double
1x16837 double
1x15977 double
1x267 double
Is there a way to find all the elements with length greater than 2000 and assign them to a new variable?
Thanks
Stephen23 on 16 Apr 2019
"I have a struct AT.AX"
"Is there a way to find all the cells ..."
Structure arrays do not have cells (but they do have elements).
Please clarify if you have a structure array or a cell array.
Manny Kins on 17 Apr 2019
Hi, I used the word cell quite carelessly, I had a structure array with elements. I have edited my question so it becomes a bit clearer to anyone else reading. Thanks again for your help.

Stephen23 on 16 Apr 2019
Fake data:
AT(1).AX = rand(1,370);
AT(2).AX = rand(1,1007);
AT(3).AX = rand(1,3957);
AT(4).AX = rand(1,6309);
AT(5).AX = rand(1,1648);
AT(6).AX = rand(1,2032);
AT(7).AX = rand(1,1173);
AT(8).AX = rand(1,16837);
AT(9).AX = rand(1,15977);
AT(10).AX = rand(1,267);
And then simply:
L = cellfun('length',{AT.AX});
Z = AT(L>2000)
Manny Kins on 16 Apr 2019
Thank you for your help, KSSV also came up with a similar solution but this one is more directly applicable to my setup.

KSSV on 16 Apr 2019
% Make some random data for demo
A = cell(10,1) ;
for i = 1:10
N = randperm(1000,1) ;
A{i} = rand(N,1) ;
end
% Pick cells whose length greater than 500
L = cellfun(@length,A) ;
B = A(L>500)
Manny Kins on 16 Apr 2019

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!