结构初始化
这篇文章延续了最近其他文章的主题,经常被问到的问题(可能还有其他人)。它与初始化结构有关。有一个健康的的帖子在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数组,所以没有必要预先对它们进行初始化。然而,关键是尽量不要成长结构体它本身或它的任何内容。
结构的使用
你用结构做什么?您是否能够填充您的内容结构体前面吗?或者至少在应用程序中尽早确定大小?要告诉我你的用法,请发布细节在这里.
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。