4

我有一个结构数组,想将所有空属性设置为 NaN:

structArray = 
29x1 struct array with fields:
    value
    id

如果它们为空,如何将所有 struct.value 属性设置为 NaN?

如果它们为空,则转换将[structArray.value]省略空元素...

4

2 回答 2

6

鉴于这种:

x(29).id = [];
x(29).value = [];

您可以像这样设置所有.id字段的值

[x.value] = deal(nan);

要仅设置特定的值子集,请定义要设置的值掩码,然后在赋值语句中使用它:

maskEmptyId = arrayfun(  @(a)isempty(a.id),  x  );
[x(maskEmptyId).id] = deal(nan);
于 2013-01-15T16:32:17.497 回答
0

正如@Pursuit 解释的那样,有一种用 NaN 替换空字段的好方法

但是,您可能也对不同的方法感兴趣。

而不是事后更换,您可以首先防止出现空位。假设它们是空的,因为没有分配任何东西给它们,你可以简单地用 NaN 初始化你的结构。

例如:

structArray = struct ('id',[],'value',NaN)

在将任何内容分配给 structArray 之前调用它会使用 NaN 初始化 value 字段,但仍会将 id 初始化为空。

于 2013-01-15T17:13:59.107 回答