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。