[英]How to find index of the last non-empty element in a cell array
我初始化了一個很長的單元格數組(向量?)
train_labels = cell(16218, 1);
這些將使用來自50個不同文件夾的文件填充,以確保文件在正確的位置編入索引,我需要寫入的最后一個單元格數組的索引。
例如,在讀取一個文件夾后, train_labels
的索引已達到5406
。 現在要從下一個文件夾中讀取圖像,必須將它們保存到5407
的下一個索引。 為了完成這項工作,我需要在train_labels
找到最后一個非空數組的train_labels
。
由於簡單的find(train_labels,1,'last')
不適用於單元陣列。 我使用過cellfun
但是也cellfun
。 這是我試過的:
cellfun(@find, train_labels, 'last')
Error using cellfun
Input #3 expected to be a cell array, was char instead.
非常感謝有關如何獲取單元格數組的最后一個索引的任何指導。
謝謝
使用cellfun
用'isempty'
選項-
last_non_empty_index = find(~cellfun('isempty',train_labels),1,'last')
你也可以使用cellfun(@isempty..)
,但我相信一定要慢一點。 這篇未記載的MATLAB博客文章已對此進行了詳細討論。
isempty
是一個內置的,因此似乎是一個優化的實現。 2014A版cellfun
中提供的其他內置插件有 - 'isreal'
, 'islogical'
, 'length'
, 'ndims'
, 'prodofsize'
, 'size'
, 'isclass'
。 我希望這些也是快速實現。 有關這些的更多信息,請參見官方文檔,可通過>> help cellfun
訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.