如何在MATLAB中创建通用结构?

时间:2014-07-07 05:50:09

标签: arrays matlab struct

我目前正在编写一个基本上记录多个外围设备数据的程序。由于我记录了来自每个外设的相同数据,因此我认为这是将这些数据封装在结构中的好机会。我原本设想用一个" C"样式结构,但是当我深入研究MATLAB的文档时,我意识到语法是完全不同的。

更具体地说,我需要 - 在MATLAB的约定中 - 一个1乘6的结构。如果我使用C,我只需定义一个结构原型,并根据需要创建尽可能多的实例。理想情况下,这允许我干净地组织我的代码。

然而,MATLAB似乎没有提供这种能力。例如,这是我看到如何做我想要的一种方式:

patient.name = 'John Doe';
patient.billing = 1;

%Create a second "instance"
patient.name(2) = 'Someone else';
patient.billing(2) = 2;

上面的方法确实有效,因为我可以添加任意数量的实例。不过,我想知道我是否可以简单地用我已经需要的字段定义一个通用结构?如果可以,这将使我能够更好地区分不同的外围设备,同时保持更清晰,更容易遵循代码。

赞赏任何有建设性的意见。

1 个答案:

答案 0 :(得分:4)

如果您愿意,可以使用与c类似的方式制作结构。

patient.name(2) = 'Someone else';
patient.billing(2) = 2;

这只是将结构元素转换为数组。如果你想创建一个结构数组,你会这样做:

patient(2).name = 'Someone else';
patient(2).billing = 2;

如果你想用你需要的字段创建一个结构,你可以这样做:

function outstruct = createstruct(name, billing history, age)
    outstruct = struct('name', name, 'billing', billing, 'hist ...
end

虽然在没有函数的情况下将它添加到代码体中也同样容易。