8

matlab に非常に大きな構造体配列があります。議論のために、状況を単純化するために、次のようなものがあるとします。

structure(1).name = 'a';
structure(2).name = 'b';
structure(3).name = 'c';
structure(1).returns = 1;
structure(2).returns = 2;
structure(3).returns = 3;

structure(2)ここで、(構造体配列内のすべてのエントリ)からすべてを削除したい状況が発生したとします。それを行う良い方法は何ですか?

私の解決策は、対応するフィールドを[](たとえばstructure(1).name = [];)に設定することでしたが、それはそれらを削除せず、空にするだけです。実際に構造体配列から完全に削除するにはどうすればよいですか? 方法はありますか?

4

1 に答える 1

12

インデックスの要素を削除する場合iは、次のように簡単に実行できます。

i = 3
structure(i) = [];

そしてそれは index の要素を削除します3

例:

st.name = 'text';
st.id = 1524;
arrayOfSt = [st st st st st];

今:

arrayOfSt = 

    1x5 struct array with fields:
        name
        id

実行すると:

arrayOfSt(2) = [];

構造体の配列の新しい値は次のようになります。

arrayOfSt = 

    1x4 struct array with fields:
        name
        id

それを試してみてください !

于 2012-12-04T08:44:10.317 に答える