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

Matlab 从结构的每个字段中删除第i个元素,matlab,Matlab,我有一个名为phonebook的结构,其中包含各种字段:first\u name,last\u name,phone\u number。一个典型的例子是: phonebook.first_name(1) = 'Roger' phonebook.last_name(1)= 'Maxwell' phonebook.phone_number(1) = '+3123-231232' 有时我需要完全删除一条记录,所以我写了如下内容: phonebook.first_name(i) = [] phoneb

我有一个名为
phonebook
的结构,其中包含各种字段:
first\u name
last\u name
phone\u 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) = []

您是否考虑过使用结构数组而不是数组结构

这样就很容易删除整个记录:

phonebook(1) = []

phonebook = 

    field1: 2
    field2: 'B'

这里有一篇很好的帖子讨论了两者的区别:

您是否考虑过使用结构数组而不是数组结构

这样就很容易删除整个记录:

phonebook(1) = []

phonebook = 

    field1: 2
    field2: 'B'

这里有一篇很好的帖子讨论了两者的区别:

你想要这样的东西吗

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]

你想要那样的东西吗

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]

我必须经常对字段进行排序。这样排序就更复杂了。一点也不……只要使用这个很棒的FileExchange选项:。或者,如果您只对1个字段进行排序,您可以手动进行排序,就像:
[~,idx]=sort([phonebook.field1]);电话簿=电话簿(idx)我必须经常对字段进行排序。这样排序就更复杂了。一点也不……只要使用这个很棒的FileExchange选项:。或者,如果您只对1个字段进行排序,您可以手动进行排序,就像:
[~,idx]=sort([phonebook.field1]);电话簿=电话簿(idx)