2011-12-03 19 views
1

phonebookという名前の構造体には、さまざまなフィールド:first_name,last_name,があります。典型的な例:構造体の各フィールドからi番目の要素を削除します

phonebook.first_name(1) = 'Roger' 
phonebook.last_name(1)= 'Maxwell' 
phonebook.phone_number(1) = '+3123-231232' 

は時々私は完全にレコードを削除する必要があるので、私のような何かを書く:

phonebook.first_name(i) = [] 
phonebook.last_name(i)= [] 
phonebook.phone_number(i) = [] 

は記述する必要なしに、i番目のレコードを削除する方法はありです各フィールド?並べ替え:

phonebook.*(i) = [] 

答えて

1

は、あなたの代わりに配列の構造の構造体配列を使用して考えがありますか?

phonebook(1) = struct('field1', 1, 'field2', 'A'); 
phonebook(2) = struct('field1', 2, 'field2', 'B'); 

そして、全体のレコードを削除するのは簡単である:ここでは

phonebook(1) = [] 

phonebook = 

    field1: 2 
    field2: 'B' 

は違いについて話していいのポストです:http://blogs.mathworks.com/pick/2008/04/22/matlab-basics-array-of-structures-vs-structures-of-arrays/

+0

フィールドを頻繁にソートする必要があります。このようにソーティングはより複雑です。 –

+0

まったく...この素晴らしいFileExchangeピックを使用してください:http://www.mathworks.com/matlabcentral/fileexchange/28573-nested-sort-of-structure-arraysまたは、1つのフィールドだけをソートする場合は、次のように手動で行うことができます: '[〜、idx] = sort([phonebook.field1]); phonebook =電話帳(idx); ' –

0

あなたがそのような何かをしたいですか?

a.b=[1 2 3]; 
a.c=[2 3 4]; 
for f=fieldnames(a)', a.(f{1})(1)=[]; end 
a 

a = 

    b: [2 3] 
    c: [3 4] 
関連する問題