Finding columns in a cell array containing finite elements

3 ビュー (過去 30 日間)
Himanshi Rani
Himanshi Rani 2017 年 9 月 14 日
コメント済み: Guillaume 2017 年 9 月 14 日
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 日
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 件のコメント
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 件)

カテゴリ

Help Center および File ExchangeSpecialized Power Systems についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by