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.xx字段中所有值的逗号分隔列表。 []将它们连接成一个行数组,与[data(1).x, data(2).x, ...]相同。

以上是关于Matlab如何获得struct内元素的个数?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB中,如何统计非数的个数

C++怎样将一个数插入到数组末尾?

Matlab struct数据提取

如何在struct数组中找到最大值

怎样创建元素为结构体变量的matlab矩阵

C语言数组如何进行元素求和?