我有一个名为phonebook
的结构,其中包含各种字段:first_name
,last_name
,phone_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) = []
答案 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]