0

我有一个 MATLAB 结构数组,其中包含一个名为image_name. 有几个条目

x(n).image_name = []

(即结构数组的第 n 行有一个image_name空的)

我想通过尝试以下方式来删除它们

idx = [x.image_name] == []
x(idx) = [];

但无法获取空字符串的索引。我尝试的每一个变化都会产生一个错误。

如何找到空字符串的行索引,以便删除它们?

4

1 回答 1

5

您可以使用{}将名称转换为元胞数组,然后使用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}));
于 2016-05-02T16:26:31.060 回答