Matlab架构数组类似于C语言中的结构体。
架构数组的创建:1,直接对域赋值产生“单架构”;2,使用struct()进行创建。
>> %创建架构数组
>> user(1).name='张三';
user(1).address='大连';
user(1).age=23;
>> user(2).age=23;
user(2).address='大连1';
user(2).name='张三2';
>> user
user =
1x2 struct array with fields:
name
address
age
>> user(1)
ans =
name: '张三'
address: '大连'
age: 23
>> user(2)
ans =
name: '张三2'
address: '大连1'
age: 23
>> user(5)=struct('name','李四','address','沈阳','age',33)%使用struct创建架构数组
user =
1x5 struct array with fields:
name
address
age
>> user(5)
ans =
name: '李四'
address: '沈阳'
age: 33
架构数组域的基本操作:
访问域的内容:1,可以直接用 . 进行操作;2,用getfield()函数
>> name1=getfield(user,'name') %array_index没指定时默认为第一个
name1 =
张三
>> add2=getfield(user,{2},'address') %访问第二个的address
add2 =
大连1
>> user(3).address='山东省泰安市' %修改值,方便操作
user =
1x5 struct array with fields:
name
address
age
>> partaddress=getfield(user,{3},'address',{1:4}) %访问address域中第三个值的前四个字符
partaddress =
山东省泰
>> getfield(user,{3}) %访问第三个
ans =
name: '张三3'
address: '山东省泰安市'
age: 23
%增加域:
>> user(3).school='北京大学'
user =
1x5 struct array with fields:
name
address
age
school
>> user(3)
ans =
name: '张三3'
address: '山东省泰安市'
age: 23
school: '北京大学'
>> user(2)
ans =
name: '张三2'
address: '大连1'
age: 23
school: []
%删除架构数组中的域
>> newuser=rmfield(user,'age') %删除架构数组中的域,将新的架构数组赋值给newuser,原架构数组不发生变化
newuser =
1x5 struct array with fields:
name
address
school
>> newuser(3)
ans =
name: '张三3'
address: '山东省泰安市'
school: '北京大学'
>> user(3)
ans =
name: '张三3'
address: '山东省泰安市'
age: 23
school: '北京大学'
架构数组操作函数:
>> fieldnames(user) %以字符串的形式返回架构数组中的所有域名
ans =
'name'
'address'
'age'
'school'
>> isstruct(user) %判断某变量是否是架构数组,是返回1,不是返回0
ans =
1
>> isfield(user,'name') %判断架构数组中是否存在某域名
ans =
1
>> isfield(user,'name1111') %判断架构数组中是否存在某域名
ans =
0