Finding columns in a cell array containing finite elements
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Himanshi Rani
il 14 Set 2017
Commentato: Guillaume
il 14 Set 2017
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
0 Commenti
Risposta accettata
Guillaume
il 14 Set 2017
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 Commenti
Stephen23
il 14 Set 2017
@Himanshi Rani: using logical indexing is likely the simplest and most efficient way of doing this.
Guillaume
il 14 Set 2017
@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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Specialized Power Systems in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!