我试图在MATLAB中初始化一个类似于C代码的结构
typedef struct{
float x;
float y;
} Data
Data datapts[100];
Run Code Online (Sandbox Code Playgroud)
从matlab,我知道这是如何创建一个结构:
Data = structure('x',0,'y',0)
Run Code Online (Sandbox Code Playgroud)
但是你如何创建它的100个实例呢?
或者这通常不是在MATLAB中完成的?每当有新数据需要添加时,MATLAB是否更喜欢动态分配?
感谢你的帮助..
abc*_*bcd 11
我不知道C,所以我不知道你的代码如何初始化结构.但是,请考虑以下两种可能性:
data,每个元素都有两个字段x和y您可以使用初始化空结构
data = struct('x', cell(100,1), 'y', cell(100,1));
Run Code Online (Sandbox Code Playgroud)
并且您访问struct数组的每个元素,并且每个元素data(1)都是一个结构.通常,如果您有多个具有相同属性集的等效"事物",但每个属性具有不同的值,则会使用这些属性.
elements = struct(...
'name', {'Hydrogen', 'Helium', 'Lithium'},...
'atomicWeight', {1, 4, 7}, ...
'symbol', {'H', 'He', 'Li'});
elements(1)
ans =
name: 'Hydrogen'
atomicWeight: 1
symbol: 'H'
Run Code Online (Sandbox Code Playgroud)
因此,您可以访问每个单独的结构以获取其属性.现在,如果您想将带有接下来的10个元素的结构数组附加到此列表中,您可以cat像使用矩阵一样使用它.
data具有两个字段x和y,每个具有100种元素您可以将其初始化为
data = struct('x',zeros(100,1),'y',zeros(100,1));
Run Code Online (Sandbox Code Playgroud)
并且您可以访问该字段的每个元素data.x(1).当您有一个具有多个可能包含不同值的属性的"东西"时,通常会使用此方法.
weather=struct('time',{{'6:00','12:00','18:00','24:00'}},...
'temperature',[23,28,25,21]);
Run Code Online (Sandbox Code Playgroud)
一旦理解了结构和结构数组以及它们如何被使用和编入索引,就可以使用比上面简单插图更复杂的方式使用它们.
repmat(Data,100,1);
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方式为其分配数据:
Data(1).x = 10;
Data(1).y = 20;
Run Code Online (Sandbox Code Playgroud)