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.