Matlab中的初始化结构

Matlab中的初始化结构,matlab,struct,Matlab,Struct,我试图在MATLAB中初始化一个类似于C代码的结构 typedef struct{ float x; float y; } Data Data datapts[100]; 通过matlab,我知道如何创建结构: Data = structure('x',0,'y',0) 但是如何创建100个实例呢 或者这通常不是在MATLAB中完成的?当有新数据需要添加时,MATLAB是否更喜欢动态分配 谢谢你的帮助 repmat(Data,100,1); 您可以通过以下方式为其分配数据: Data

我试图在MATLAB中初始化一个类似于C代码的结构

typedef struct{
 float x;
 float y;
} Data

Data datapts[100];
通过matlab,我知道如何创建结构:

Data = structure('x',0,'y',0)
但是如何创建100个实例呢

或者这通常不是在MATLAB中完成的?当有新数据需要添加时,MATLAB是否更喜欢动态分配

谢谢你的帮助

repmat(Data,100,1);
您可以通过以下方式为其分配数据:

Data(1).x = 10;
Data(1).y = 20;

我不懂C,所以我不知道你的代码是如何初始化结构的。然而,考虑这两种可能性:

1.包含100个元素的结构数组
data
,每个元素有两个字段
x
y
可以使用初始化空结构

data = struct('x', cell(100,1), 'y', cell(100,1));
您可以作为
数据(1)
访问struct数组的每个元素,每个元素都是一个struct。通常,当您有多个具有相同属性集但每个属性的值不同的等效“事物”时,会使用这些属性

例子: 因此,您可以访问每个单独的结构以获取其属性。现在,如果您想将一个包含下10个元素的结构数组附加到此列表中,您可以使用
cat
,就像对矩阵一样

2.结构
data
,包含两个字段
x
y
,每个字段包含100个元素 您可以将其初始化为

data = struct('x',zeros(100,1),'y',zeros(100,1));
您可以通过
data.x(1)
访问字段的每个元素。当您有一个“东西”和多个可能包含不同值的属性时,通常会使用此选项

例子:
一旦你了解了结构和结构数组以及它们的使用和索引方式,你就可以用比上面简单的插图更复杂的方式来使用它们。

除了@yoda和@Jacob描述的其他方法外,你还可以使用
cell2struct

你的第二个例子与第一个基本相同。要获得1x1结构,您必须将单元数组放入双花括号
{{…}}
@yuk-Ah,是的。谢谢我在没有MATLAB的情况下编写了它,因此错过了:)您不需要
Data=repmat(Data,100,1)
将“答案”分配给新结构吗?
data = struct('x',zeros(100,1),'y',zeros(100,1));
weather=struct('time',{{'6:00','12:00','18:00','24:00'}},...
    'temperature',[23,28,25,21]);