Select values from cell array with condition using cellfun

21 views (last 30 days)
Hi..
I need help for selecting values in cell array
for example i have this cell array:
A = {[1,1,2; 2,2,3],[1,3,4; 3,2,4],[4,3,2;-2,-3,1];[1,2,5; 2,9,8],[1,1,4; 3,8,9],[1,8,4;-6,-9,5];[1,2,3; 4,3,1],[1,4,4; 2,5,3],[1,3,2;-9,6,7]};
Then, i want to select the value that doesn't have number more than 5 and more than -5
expected result:
result = {[1,1,2;2,2,3];[1,3,4;3,2,4];[1,2,3;4,3,1];[1,4,4;2,5,3];[4,3,2;-2,-3,1]}
the code that i have tried only can select value of the condition
T = cellfun(@(n) any(any(n > 5 | n < -5)), A, 'UniformOutput', true);
Res = A(T);
Res = {[1,2,5;2,9,8];[1,1,4;3,8,9];[1,8,4;-6,-9,5];[1,3,2;-9,6,7]}
Any idea how to solve it ?
Thanks in Advance..

Accepted Answer

Bhaskar R
Bhaskar R on 19 Feb 2020
Edited: Bhaskar R on 19 Feb 2020
Res = A(find(~cellfun(@(x)any(x>5 | x<-5, 'all'), A)));
  5 Comments

Sign in to comment.

More Answers (1)

madhan ravi
madhan ravi on 19 Feb 2020
Edited: madhan ravi on 19 Feb 2020
A(cellfun(@(x) all(all(x>-6 & x<6)), A)) % for versions 2018b>= usage of all() would be all(...,[1,2])

Categories

Find more on Cell Arrays 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!