我有一个结构数组,想将所有空属性设置为 NaN:
structArray =
29x1 struct array with fields:
value
id
如果它们为空,如何将所有 struct.value 属性设置为 NaN?
如果它们为空,则转换将[structArray.value]
省略空元素...
我有一个结构数组,想将所有空属性设置为 NaN:
structArray =
29x1 struct array with fields:
value
id
如果它们为空,如何将所有 struct.value 属性设置为 NaN?
如果它们为空,则转换将[structArray.value]
省略空元素...
鉴于这种:
x(29).id = [];
x(29).value = [];
您可以像这样设置所有.id
字段的值
[x.value] = deal(nan);
要仅设置特定的值子集,请定义要设置的值掩码,然后在赋值语句中使用它:
maskEmptyId = arrayfun( @(a)isempty(a.id), x );
[x(maskEmptyId).id] = deal(nan);
正如@Pursuit 解释的那样,有一种用 NaN 替换空字段的好方法
但是,您可能也对不同的方法感兴趣。
而不是事后更换,您可以首先防止出现空位。假设它们是空的,因为没有分配任何东西给它们,你可以简单地用 NaN 初始化你的结构。
例如:
structArray = struct ('id',[],'value',NaN)
在将任何内容分配给 structArray 之前调用它会使用 NaN 初始化 value 字段,但仍会将 id 初始化为空。