Stu*_*PhD 4 arrays matlab vector cell-array
我初始化了一个很长的单元格数组(向量?)
train_labels = cell(16218, 1);
Run Code Online (Sandbox Code Playgroud)
这些将使用来自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.
Run Code Online (Sandbox Code Playgroud)
非常感谢有关如何获取单元格数组的最后一个索引的任何指导.
谢谢
使用cellfun
与'isempty'
选择-
last_non_empty_index = find(~cellfun('isempty',train_labels),1,'last')
Run Code Online (Sandbox Code Playgroud)
你也可以使用cellfun(@isempty..)
,但我相信一定要慢一点.这篇未记载的MATLAB博客文章已对此进行了详细讨论.
isempty
是一个内置的,因此似乎是一个优化的实现.其他内置插件,在2014A的版本都可以cellfun
是- ,'isreal'
,'islogical'
,'length'
,'ndims'
,'prodofsize'
,.'size'
'isclass'
我希望这些也是快速实现.有关这些的更多信息,请参见可通过其访问的官方文档>> help cellfun
.