Matlab如何获得struct内元素的个数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab如何获得struct内元素的个数?相关的知识,希望对你有一定的参考价值。
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 参考技术A 你说的“元素”是指结构体的域(field,也称字段)吧?
如果是,那就用filednames获取struct所有的字段名,然后length一下就知道有多少个了。追问
是的,“元素”是指“域”.谢谢指正。我试过之后再来告诉你
追答应该不会有问题的,以前用过很多次
本回答被提问者和网友采纳 参考技术B length就OK了。如何在struct数组中找到最大值
我有一个看起来像这样的结构:
data.index
data.x
data.y
它有1到100个元素,我可以用data(Window_Size).y
(或其他)访问。我想要做的是独立地比较所有x值和所有y值,以获得maxX,maxY,minX和minY。
我试过这样的事
MaxX = max(data(:).x);
但这似乎不起作用。任何帮助,将不胜感激;在过去的几个小时里,我对Matlab的经验绝对没有尝试解决这个问题。
答案
你快到了!试试这个:
MaxX = max([data.x]);
data.x
是x
字段中所有值的逗号分隔列表。 []
将它们连接成一个行数组,与[data(1).x, data(2).x, ...]
相同。
以上是关于Matlab如何获得struct内元素的个数?的主要内容,如果未能解决你的问题,请参考以下文章