How to select data from a cell array based on some condition

Hi, I am facing a problem with cell array, I have a data, for example, A as below
A = {[0, 5], [-2, 3]; [0,0], [12,-21]};
And I want the output as a cell/array of values greater than 2, like this-
B = {[5], [3]; [0], [12]}
I tried this way but its not working
K = @(data, fn) cellfun(@(x) x(data{:}), fn,'UniformOutput',0);
B = K(A, {@(x) x > 2})
I would appreciate if anybody help me with this

2 件のコメント

Stephen23
Stephen23 2019 年 9 月 1 日
"I want the output as a cell/array of values greater than 2, , like this- B = {[5], [3]; [0], [12]}"
How is zero greater than two ?
Hedayat
Hedayat 2019 年 9 月 1 日
Sorry for not mentioning the case when it doesn’t satisfy the condition(both elements are zero). It should give me either zero or NaN.

サインインしてコメントする。

 採用された回答

Stephen23
Stephen23 2019 年 9 月 2 日

1 投票

>> A = {[0,5], [-2,3]; [0,0], [12,-21]};
>> B = cellfun(@(v)v(v>2),A,'Uni',0);
>> B(cellfun('isempty',B)) = {NaN}
B =
[ 5] [ 3]
[NaN] [12]

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2019 年 8 月 31 日

1 投票

B = cellfun(@(data) max(data), A, 'uniform', 0);
C = cellfun(@(data) min(data), A, 'uniform', 0);

1 件のコメント

Hedayat
Hedayat 2019 年 8 月 31 日
Thanks Walter, but I actually needed to do more operation on my data so I edited the question to be more general. If you could help me with this too.

サインインしてコメントする。

カテゴリ

質問済み:

2019 年 8 月 31 日

コメント済み:

2019 年 9 月 5 日

Community Treasure Hunt

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

Start Hunting!

Translated by