matlab关于结构体的创建

网上搜了很多结构体的创建,都是什么student.name student.age,或者struct.
自己摸索了一下,根据你想要创建结构体的格式可以划分以下两类

clear all
clc

data = [1, 2, 2, 1;
        2, 1, 1, 3;
        4, 3, 2, 2];

data1 = [0, 2, 2, 1;
        0, 1, 1, 3;
        4, 3, 0, 2;
         4, 3, 0, 2; 
         4, 3, 0, 2];

data2 = [0, 2, 2, 1;
        0, 1, 1, 3;
        4, 3, 0, 2];


%% ==============第一种格式==================
ptdata(1).x = data(1,1);
ptdata(1).y = data(1,2);
ptdata(1).z = data(1,3);
ptdata(1).v = data(1,4);


ptdata(2).x = data(2,1);
ptdata(2).y = data(2,2);
ptdata(2).z = data(2,3);
ptdata(2).v = data(2,4);
%% =============第二种格式=================
stdata(1).x = data(:,1);
stdata(1).y = data(:,2);
stdata(1).z = data(:,3);
stdata(1).v = data(:,4);

%% ===========将结构体数组组成为多个结构体===============
% method1:

mtdata{1} = ptdata;
mtdata{2} = ptdata;


% method2:

stdata(2).x = data1(:,1);
stdata(2).y = data1(:,2);
stdata(2).z = data1(:,3);
stdata(2).v = data1(:,4);



stdata(3).x = data2(:,1);
stdata(3).y = data2(:,2);
stdata(3).z = data2(:,3);
stdata(3).v = data2(:,4);

% stdata(1).x
% 结果为取出第一组所有字段的数据
%    x: [3×1 double]
%     y: [3×1 double]
%     z: [3×1 double]
%     v: [3×1 double]
% stdata(1).x(1)
% 结果为取出第一组X字段的第一个数据
% 1

结果如下:
在这里插入图片描述

在这里插入图片描述
mtdata:
在这里插入图片描述
根据自己的需求选择就ok了!

### 如何在 MATLAB 中定义和初始化结构体变量MATLAB 中,可以通过 `struct` 函数来创建结构体变量。以下是关于如何定义和初始化结构体变量的具体方法: 通过 `struct` 函数可以显式地指定字段名称及其对应的初始值[^2]。例如,下面的代码展示了如何创建一个具有三个字段的单个结构体变量: ```matlab book = struct('name', 'Matlab', 'price', 20, 'pubtime', '2011'); ``` 如果需要初始化多个相同的结构体,则可以直接扩展上述方式。例如,创建两个书籍的信息作为结构体数组如下所示: ```matlab books(1) = struct('name', 'Matlab', 'price', 20, 'pubtime', '2011'); books(2) = struct('name', 'Python', 'price', 30, 'pubtime', '2019'); ``` 对于更复杂的场景,比如嵌套结构体的情况,在 C 语言中可能涉及特定语法处理,但在 MATLAB 中相对简单得多。只需将另一个已经存在的结构体赋给当前结构体内某个字段即可实现嵌套效果[^3]。 需要注意的是,当初始化结构体成员数量不足时(即部分未被赋予初值),MATLAB 默认会将其余项设置为空矩阵 (`[]`) 或者零取决于数据类型的要求[^1]。 ```matlab % 创建一个简单的结构体并仅初始化第一个元素 student = struct('id', [], 'name', '', 'score', []); stu1 = student; stu1.id = 1; disp(stu1); ``` 以上内容涵盖了从基本到稍微复杂一些的操作指南用于帮助理解怎样去操作MATLAB中的结构体以及它们的相关属性设定过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值