本节介绍 MATLAB 结构体(struct):在同一变量名下组织多个命名字段,各字段可存放不同类型。若数据表示的是带若干属性的对象(例如学生的姓名、年龄与成绩),用结构体比强行拆成多个平行数组或填入同型数值矩阵更清晰。
手动创建结构体:点号赋值
用点号写字段名直接赋值,字段会随赋值出现:
结构体将多个字段组织在同一变量中:
student.name、student.age、student.scores 各自保存对应数据,互不影响。student.name = 'Riya';
student.age = 20;
student.scores = [88 92 85];
student要建一组学生(结构体数组),用下标扩展:
students(1).name = 'Riya';
students(1).age = 20;
students(2).name = 'Tiya';
students(2).age = 22;
students1x2 struct array with fields:
name
age用 struct() 一次性创建
批量创建时,字段值可用 cell 和普通数组搭配:
names = {'Riya', 'Tiya', 'Siya'};
ages = [20, 22, 19];
students = struct('Name', names, 'Age', ages)1x3 struct array with fields:
Name
Age访问:读和写字段
students(1).Name % 取第一个学生的名字
students(2).Age % 取第二个学生的年龄
students(1).Age = 21; % 修改要一次取出所有学生的名字,用花括号解包:
all_names = {students.Name} % cell:{'Riya','Tiya','Siya'}判断与增删字段
fieldnames(students) % {'Name'; 'Age'}
isfield(students, 'Name') % 1,有 Name 字段
isfield(students, 'Score') % 0
isstruct(students) % 1
t = rmfield(students, 'Age') % 删掉 Age 字段,返回新结构体动手练习
- 用点号赋值创建一本书的结构体:书名、作者、价格、页数。
- 把三个学生建成结构体数组,用
fieldnames看字段。 - 用
{students.Name}一次性取出所有名字。 - 给结构体数组再追加一个学生,观察它变成 1x4。
本节说明了结构体的点号赋值、struct 批量创建、字段读写、fieldnames 与增删字段等用法。下一节介绍元胞数组:在允许元素类型不一致的前提下,用圆括号与花括号区分访问容器与访问内容。