结构型变量的定义
结构型变量的相关函数
函数名 | 说明 |
---|---|
struct | 创建或转换结构型变量 |
fieldnames | 得到结构型变量的属性名 |
getfield | 得到结构型变量的属性值 |
setfield | 设定结构型变量的属性值 |
rmfield | 删除结构型变量中的属性 |
isfield | 判断是否为结构型变量的属性 |
isstruct | 判断变量是否为结构型变量 |
结构型变量的定义有两种方法
- 直接赋值定义
- 函数
struct
定义
注意:直接赋值时,需要指出结构中的属性名,并且用指针操作符“.”来连接结构型变量名与属性名。对属性直接赋值,会自动生成结构型变量,并使结构型变量包含所定义的属性。
第一种直接赋值定义
>> Test.a1 = 'avcdef';
>> Test.a2 = 6;
>> Test.ae = [1, 2, 3, 4, 5];
>> Test
运行结果:
上面代码表示定义了结构型变量,结构型变量有3个属性:属性a1,属性a2,属性a3。
第二种函数struct
定义
使用函数struct
来定义结构型变量,格式如下:
结构型变量名 = struct(元素名1,元素值1,元素名2,元素值2,......)
>> A = [1, 2, 3, 4, 5];
>> B = struct('a1', A, 'b2', 2, 'C3', 'abcdef')
>> B
运行结果:
fieldnames函数的使用
A = [1, 2, 3, 4, 5];
B = struct('a1', A, 'b2', 2, 'C3', 'abcdef')
fieldnames(B) % 调用处结构型变量B的所有元素名
运行结果:
getfield函数的使用
A = [1, 2, 3, 4, 5];
B = struct('a1', A, 'b2', 2, 'C3', 'abcdef')
C = getfield(B, 'a1') % getfield函数把 B.a1 的值赋给 C
运行结果:
setfield函数的使用
setfield
函数对结构型变量的属性值更新后的结果赋给新的结构型变量或在原有的结构型变量基础上添加新的属性。
注意:必须将函数结果赋予该结构型变量,否则将不会实现更改属性值的作用。
A = [1, 2, 3, 4, 5];
B = struct('a1', A, 'b2', 2, 'C3', 'abcdef')
C = setfield(B, 'a1', [6, 7, 8, 9]) % setfield函数对 B.a1 的值 进行更新,产生新的结构型变量赋给
C = setfield(C, 'b2', 10) % setfield函数把 C.b2 进行更新,产生新的结构型变量赋给
C = setfield(C, 'b3', 100) % setfield函数 在结构型变量 C中 添加新的属性
运行结果:
rmfield函数的使用
A = [1, 2, 3, 4, 5];
B = struct('a1', A, 'b2', 2, 'C3', 'abcdef')
C = rmfield(B, 'a1') % 删除结构型变量的属性 a1 赋值给结构型变量 C,需要将结果赋予原变量 或 新的变量,才能更新原变量或新的变量拥有更新后的结果
运行结果:
isfield函数的使用
A = [1, 2, 3, 4, 5];
B = struct('a1', A, 'b2', 2, 'C3', 'abcdef')
C = isfield(B, 'a1') % 判断是否是结构型变量的属性
C = isfield(B, 'aa') % 判断是否是结构型变量的属性
运行结果:
isstruct函数的使用
A = [1, 2, 3, 4, 5];
B = struct('a1', A, 'b2', 2, 'C3', 'abcdef')
C = isstruct(A) % 判断是否为结构型变量
C = isstruct(B) % 判断是否为结构型变量
运行结果: