
全部展开
1. 创建结构数组
MATLAB提供了两种定义结构的方法: 直接应用和使用struct函数.
a)使用直接引用来定义结构
就像创建数字数组,创建新的struct对象一样,不需要事先声明,可以直接引用它,并且可以动态扩展它. 例如,创建一个复杂变量x:
x.real = 0;%创建一个名为real的字段并将0分配给该字段
x.imag = 0%为x创建一个新的字段imag,并将0分配给该字段
x =
真实: 0
imag: 0
然后可以将其动态扩展为数组:
x(2).real = 0;%将x扩展为1×2结构数组
x(2).imag = 0;
只要需要,32313133353236313431303231363533e59b9ee7ad9431333337613837也可以动态扩展数组的字段,例如增加字段比例:
x(1).scale = 0;
这样,所有x都添加了一个scale字段,并且x(1)以外的变量的scale字段为空:
![]()
x(1)%查看结构数组第一个元素的每个字段的内容
ans =
真实: 0
imag: 0
比例: 0
x(2)%查看结构数组第二个元素的每个字段的内容,请注意未分配的字段为空
ans =
真实: 0
imag: 0
规模: []
应注意,x的实,成像和缩放字段不一定是单个数据元素. 它们可以是任何数据类型,可以是向量,数组,矩阵,甚至其他结构变量或单元格数组,并且可以使用不同的字段. 数据类型不必相同. 例如:
清除x; x.real = [1 2 3 4 5]; x.imag =个(10,10);
数组中不同元素的相同字段的数据类型不必相同:
x(2).real ='123';
x(2).imag = rand(5,1);
您甚至可以通过引用数组字段来定义结构数据类型的字段:

x(3).real = x(1); x(3).imag = 3;
x(3)
ans =
真实: [1x1结构]
imag: 3
b)使用struct函数创建结构
还可以使用struct函数创建结构,该函数可以将其他形式的数据生成或转换为结构数组.
struct的格式为:
s = sturct('field1',values1,'field2',values2,...);
此函数将生成具有指定字段名称和相应数据的结构数组. 其中包含的数据value1,value2等必须是维数相同的数据,并且数据存储位置一一对应于其他结构位置.
单元格数组用于分配struct. 数组values1,values2等可以是单元格数组,标量单元格单位或单个值. 每个值的数据都分配给相应的字段字段.
当valuesX是单元格数组时结构体数组,生成的结构数组的尺寸与单元格数组的尺寸相同. 如果数据中不包含单元格,则结果结构数组的尺寸为1×1. 例如:
s = struct('type',{'big','little'},'color'结构体数组,{'blue','red'},'x',{3,4})
s =
具有字段的1x2结构数组:
类型

颜色
x
获取尺寸为1×2的结构数组s,其中包含3个类型,颜色和x字段. 这是因为在结构函数{'big','little'},{'blue','red'}和{3,4}是1×2单元格数组中,可以看到两个数据分量分别为:
s(1,1)
ans =
类型: “大”
颜色: “蓝色”
x: 3
s(1,2)
ans =
类型: “小”
颜色: “红色”
x: 4
相应地,如果struct函数以以下形式编写:
s = struct('type',{'big';'little'},'color',{'blue';'red'},'x',{3; 4})
s =

具有字段的2x1结构数组:
类型
颜色
x
您将获得2×1结构数组.
2. 结构数组的操作
MATLAB中没有很多函数专用于结构数组的操作. 您可以通过帮助数据类型获取数据类型列表,还可以查看结构数据类型的相关功能.
结构数组的运算功能
将输入处理为输出
Fieldnames获取结构的字段名称
getfield获取结构中指定字段的值
Rmfield删除结构的字段(不是字段内容)
setfield设置结构数组中指定字段的值
结构创建一个结构数组
struct2cell结构数组转换为单元格数组
Isfield判断该字段是否存在
isstruct确定变量是否为结构类型
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-229176-1.html
我们就应该是没有敌对情绪亲密同胞