Finding columns in a cell array containing finite elements

Hi, I have a m*n cell array containing x and y coordinates , suppose K is a 3*2 cell array as follows:
K=
[Inf] [1x2 double] [Inf]
[Inf] [ Inf] [1x2 double]
[Inf] [Inf] [Inf]
I want to access the columns of the array that are not infinite. My aproach: find([K{f,:}]< inf) returns columns as 2,3 for the first row. I want the result to be just 2. The x and y coordinates occur at random positions.
Is there any way to find the columns of the cell array?
Thanks

 採用された回答

Guillaume
Guillaume 2017 年 9 月 14 日

1 投票

cellfun(@(x) all(isfinite(x)), K)
will return a logical array telling you whether each cell of K contains only finite values. You can pass that to find if you do need to know the rows or columns. Most time, using the logical array as a filter is faster.

3 件のコメント

Himanshi Rani
Himanshi Rani 2017 年 9 月 14 日
Is there any way to do this without converting it to a logical array?
Stephen23
Stephen23 2017 年 9 月 14 日
@Himanshi Rani: using logical indexing is likely the simplest and most efficient way of doing this.
Guillaume
Guillaume 2017 年 9 月 14 日
@Himanshi Rani, every time you use find, you are using a logical array. In your original approach find([K{f,:}]< inf), the [K{f,:}]< inf is a logical array.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeSpecialized Power Systems についてさらに検索

質問済み:

2017 年 9 月 14 日

コメント済み:

2017 年 9 月 14 日

Community Treasure Hunt

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

Start Hunting!

Translated by