我有一个 MATLAB 结构数组,其中包含一个名为image_name
. 有几个条目
x(n).image_name = []
(即结构数组的第 n 行有一个image_name
空的)
我想通过尝试以下方式来删除它们
idx = [x.image_name] == []
x(idx) = [];
但无法获取空字符串的索引。我尝试的每一个变化都会产生一个错误。
如何找到空字符串的行索引,以便删除它们?
我有一个 MATLAB 结构数组,其中包含一个名为image_name
. 有几个条目
x(n).image_name = []
(即结构数组的第 n 行有一个image_name
空的)
我想通过尝试以下方式来删除它们
idx = [x.image_name] == []
x(idx) = [];
但无法获取空字符串的索引。我尝试的每一个变化都会产生一个错误。
如何找到空字符串的行索引,以便删除它们?
您可以使用{}
将名称转换为元胞数组,然后使用isempty
(within cellfun
) 查找空条目并将其删除。
ismt = cellfun(@isempty, {x.image_name});
x = x(~ismt);
或者在一行
x = x(~cellfun(@isempty, {x.image_name}));
更新
正如@Rody在评论中提到的那样,使用'isempty'
而不是构造匿名函数要快得多。
x = x(~cellfun('isempty', {x.image_name}));