我初始化了一个很长的元胞数组(向量?)
train_labels = cell(16218, 1);
这些将使用来自 50 个不同文件夹的文件进行填充,为了确保文件在正确的位置建立索引,我需要最后写入的元胞数组的索引。
例如读取一个文件夹后,索引在train_labels
已达到5406
。现在要从下一个文件夹中读取图像,必须将它们保存到下一个索引中5407
。为了做到这一点,我需要找到最后一个非空数组的位置train_labels
.
既然简单find(train_labels,1,'last')
不适用于元胞数组。我用了cellfun
但这也行不通。这是我尝试过的:
cellfun(@find, train_labels, 'last')
Error using cellfun
Input #3 expected to be a cell array, was char instead.
对于有关如何获取元胞数组的最后一个索引的任何指导,我们将不胜感激。
谢谢
Use cellfun
with 'isempty'
选项 -
last_non_empty_index = find(~cellfun('isempty',train_labels),1,'last')
您还可以使用cellfun(@isempty..)
,但我相信一定会慢一些。这在本文中已经详细讨论过无证 MATLAB 博客文章.
isempty
是一个内置的,因此似乎是一个优化的实现。 2014A 版本中提供的其他内置功能cellfun
are - 'isreal'
, 'islogical'
, 'length'
, 'ndims'
, 'prodofsize'
, 'size'
, 'isclass'
。我希望这些也能够快速实现。有关这些的更多信息可在其官方文档中找到,可以通过以下方式访问>> help cellfun
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)