如何检测单元阵列中的空单元格?我知道删除空单元格的命令是a(1) = [],但我似乎无法让MATLAB自动检测哪些单元格为空.
背景:我预先分配了一个单元格数组a=cell(1,53).然后我使用if exist(filename(i))和textscan来检查文件,并将其读入.结果,当filename(i)不存在时,会产生一个空单元格,然后我们移动到下一个文件.
当我读完所有文件后,我想删除空单元格a.我试过了if a(i)==[]
我有一个空单元格数组和一些我想要转换为逻辑数组的单元格,其中空单元格为零.当我使用cell2mat时,空单元格被忽略,我最终得到一个只有1的矩阵,没有引用它们持有的先前索引.有没有办法在不使用循环的情况下执行此操作?
示例代码:
for n=1:5 %generate sample cell array
mycellarray{n}=1;
end
mycellarray{2}=[] %remove one value for testing
Run Code Online (Sandbox Code Playgroud)
我试过的事情:
mylogicalarray=logical(cell2mat(mycellarray));
Run Code Online (Sandbox Code Playgroud)
这导致[1,1,1,1],而不是[1,0,1,1,1].
for n=1:length(mycellarray)
if isempty(mycellarray{n})
mycellarray{n}=0;
end
end
mylogicalarray=logical(cell2mat(mycellarray));
Run Code Online (Sandbox Code Playgroud)
哪个有效,但使用循环.