罗兰关于MATLAB的艺术

将想法转化为MATLAB

结构初始化

这篇文章延续了最近其他文章的主题,经常被问到的问题(可能还有其他人)。它与初始化结构有关。有一个健康的的帖子在MATLAB新闻组中专门讨论此主题。所以,今天让我们分开来看。

内容

结构-心理模型

它首先有助于理解MATLAB如何处理结构及其领域。首先清理工作区。

清晰的变量关闭所有

我们从一个标量结构开始。

mystruct。FirstName=“罗兰”;mystruct。高度= 150
mystruct = FirstName: 'Loren' Height: 150

结构中的每个字段mystruct似乎是一个单独的MATLAB数组。第一个,FirstName,是一个长度为5的字符串,第二个,高度,是一个标量的双倍(单位为厘米,对于那些关注单位的人来说)。

我可以添加另一个字段,它的内容可以是任何有效MATLAB变量的内容。每个字段的大小和数据类型都是独立的。

的结构体数组

假设我想扩展这个数组以包含其他人员和测量。我可以一次增加一个元素。

mystruct(2)。FirstName =“弗雷德”;mystruct (2)
ans = FirstName: 'Fred' Height: []

你可以在这里看到高度还没有值,其值设置为空([]).

不长数组

多年来,我们已经了解到,在MATLAB中,不断增长的数组是一种对资源的糟糕使用,而预分配是有帮助的,既不分段内存,也不花时间寻找足够大的内存插槽。所以,如果我想在我的结构体,我可以初始化结构体为合适的大小。我可能觉得有必要初始化内容然而,由于每个字段元素本质上是它自己的MATLAB数组。

如何初始化结构数组

这里有两种方法来初始化结构体

mystruct(100)。FirstName =“乔治”

使用这个方法,我们可以看到元素是用空数组填充的。

mystruct (17)
ans = FirstName: [] Height: []

还有另一种方法来初始化结构体用初始值填充。

如果我们建造我们的结构体和五个儿子乔治·福尔曼,我们可以这样做。

georgeStruct =结构(“FirstName”“乔治”“高度”...{195 189 190 194 193})
georgeStruct = 1x5带有字段的结构数组:FirstName Height

看看乔治结构的内容,我们看到他的儿子们都叫乔治

{georgeStruct。FirstName}
'George' 'George' 'George' 'George' 'George' 'George' '

我编造了他们的身高

[georgeStruct。高度)
Ans = 195 189 190 194 193

要查看何时以及如何在初始化中使用单元格数组,请读取结构体仔细参考页面。如果希望字段包含单元格数组,则必须将该单元格嵌入到另一个单元格数组中。

初始化内容

初始化有多重要内容结构体.当然,这取决于您的具体情况,但是由于每个字段都是它自己的MATLAB数组,所以没有必要预先对它们进行初始化。然而,关键是尽量不要成长结构体它本身或它的任何内容。

结构的使用

你用结构做什么?您是否能够填充您的内容结构体前面吗?或者至少在应用程序中尽早确定大小?要告诉我你的用法,请发布细节在这里




MATLAB®7.5发布

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。