different outcome cellfun(@isempty,..) vs cellfun('isempty',...)
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have multiple tables stored in a cellarray. However some cells become empty [ ] after the removal of missing values.
My goal is to find out which cells become empty after this removal of ... .
I tried to do this with cellfun(@isempty,mycell) which does the job.
Further I tried to do this with cellfun('isempty',mycell) (according to what I've read this should be faster).
However the output is not the same (the last one returns a logical vector with all logical zero's).
I've checked the documentation but could not figure out why the outcomes differ.
0 Commenti
Risposta accettata
Rik
il 11 Mar 2021
The reason is partly documented:
"If you specify a function name rather than a function handle cellfun does not call any overloaded versions of the function."
It turns out that the table data type has an overloaded isempty method. As far as I could find this is not documented.
The only solution is as Steven mentions: if you want to make sure you have the expected output, use the non-legacy syntax. If you need to add something that checks the classes of the cell elements all speedup is lost, so you can only use this for cell that you have complete control over.
0 Commenti
Più risposte (1)
Steven Lord
il 11 Mar 2021
I recommend you avoid using the 'isempty' syntax in new code. It is present for backwards compatibility with (very) old code and its behavior does differ from the function handle syntax as stated in the description of the func input argument on the documentation page for the cellfun function.
0 Commenti
Vedere anche
Categorie
Scopri di più su Data Type Identification 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!