構造体の配列があり、すべての空の属性を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で初期化されますが、IDは空に初期化されます。