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)代码>