Select values from cell array with condition using cellfun

조회 수: 27(최근 30일)
Song JL
Song JL 2020년 2월 19일
댓글: Song JL 2020년 2월 19일
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..

채택된 답변

Bhaskar R
Bhaskar R 2020년 2월 19일
편집: Bhaskar R 2020년 2월 19일
Res = A(find(~cellfun(@(x)any(x>5 | x<-5, 'all'), A)));
  댓글 수: 5

댓글을 달려면 로그인하십시오.

추가 답변(1개)

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

Community Treasure Hunt

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

Start Hunting!

Translated by