1

私は巨大な動的構造を持っています。次のようになります。

s.one.name = 'Mr. Doe';
s.one.time = '12:00';
s.one.ID = '209';
s.one.data = 'Data1';

s.two.name = 'Ms. Jane';
s.two.time = '13:00';
s.two.ID = '210';
s.two.data = 'Data2';

s.three.name = 'Ms. Alice';
s.three.time = '14:00';
s.three.ID = '212';
s.three.data = 'Data3';

s.four.name = 'Mr. Smith';
s.four.time = '14:00';
s.four.ID = '212';
s.four.data = 'Data4';

oneここで、最初の 2 つのフィールド (指定されtwoたすべてのフィールドのうち) とそれに対応するデータのみにアクセスして、新しい動的構造体に格納したいと考えていますsnew

私は次のことをやってみました:

for ii = 1:2
    snew = [s.(ii)];
end

エラー:Argument to dynamic structure reference must evaluate to a valid field name.

誰かがこのタスクを達成するのを手伝ってくれますか?

前もって感謝します

4

3 に答える 3

0

コピーするフィールドをセル配列に入れてループし、動的フィールド名を介して構造体フィールドにアクセスできます。

to_keep = {'one', 'two'};

out = struct();

for k = 1:numel(to_keep)
    out.(to_keep{k}) = s.(to_keep{k});
end

他の人が指摘しているように、この操作を簡単にするためにデータを整理するより良い方法があるでしょう。

于 2016-12-05T12:55:47.893 に答える