Matlab如何获得struct内元素的个数? 比如A是一个1x1 struct,里面包含A_01,A_02,...A_10十个元素,每个元素都是1x1 struct,什么命令或方法能够获得A内包含的这些元素的个数?
struct(结构),用于存放不同的数据类型。
要想知道struct中的元素个数,可以使用fieldnames()函数查看有哪些成员(域file),然后使用length()即可得到所有数据个数了;使用getfield()函数可以查看成员数据。
语法:
names = fieldnames(s)
names = fieldnames(obj)
names = fieldnames(obj, '-full')
解析:
names = fieldnames(s) 返回结构体s的字段名,将其存储在字符串元胞数组中。
names = fieldnames(obj) 返回对象obj的公共字段名到字符串元胞数组names中,MATLAB会重载fieldnames,并定义它们的行为。
names = fieldnames(obj, '-full') 返回一个字符串元胞数组,该数组包含对象obj的各字段的名称(name)、类型(type)、属性(attributes)以及继承关系(inheritance)。该函数仅支持COM对象和Java对象。
例如:
>> a.x1 = 123;
>> a.x2 = 'a string';
>> a.x3 = [1,2,3,4,5];
>> fieldnames(a) % 返回成员名称列表
ans =
'x1'
'x2'
'x3'
>> getfield(a,'x1') % 查看某一成员的值
ans =
123
要想知道struct中的元素个数,可以使用fieldnames()函数查看有哪些成员(域file),然后使用length()即可得到所有数据个数了;使用getfield()函数可以查看成员数据。
语法:
names = fieldnames(s)
names = fieldnames(obj)
names = fieldnames(obj, '-full')
解析:
names = fieldnames(s) 返回结构体s的字段名,将其存储在字符串元胞数组中。
names = fieldnames(obj) 返回对象obj的公共字段名到字符串元胞数组names中,MATLAB会重载fieldnames,并定义它们的行为。
names = fieldnames(obj, '-full') 返回一个字符串元胞数组,该数组包含对象obj的各字段的名称(name)、类型(type)、属性(attributes)以及继承关系(inheritance)。该函数仅支持COM对象和Java对象。
例如:
>> a.x1 = 123;
>> a.x2 = 'a string';
>> a.x3 = [1,2,3,4,5];
>> fieldnames(a) % 返回成员名称列表
ans =
'x1'
'x2'
'x3'
>> getfield(a,'x1') % 查看某一成员的值
ans =
123
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-09-04
你说的“元素”是指结构体的域(field,也称字段)吧?
如果是,那就用filednames获取struct所有的字段名,然后length一下就知道有多少个了。追问
如果是,那就用filednames获取struct所有的字段名,然后length一下就知道有多少个了。追问
是的,“元素”是指“域”.谢谢指正。我试过之后再来告诉你
追答应该不会有问题的,以前用过很多次
本回答被提问者和网友采纳第2个回答 2013-09-04
length就OK了。