从结构的每个字段中删除第i个元素

时间:2011-12-03 15:50:36

标签: matlab

我有一个名为phonebook的结构,其中包含各种字段:first_namelast_namephone_number。一个典型的例子:

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) = []

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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]