我想知道 MATLAB 中的两种数据结构有什么区别:结构数组和元胞数组。
在什么情况下我们可以使用它们中的每一个?
我想知道 MATLAB 中的两种数据结构有什么区别:结构数组和元胞数组。
在什么情况下我们可以使用它们中的每一个?
结构和元胞数组都是matlab 中内置的最灵活的数据类型(与创建自己的类相反),这种灵活性伴随着代价——物理内存。
我不在启用 matlab 的机器附近,否则我会向您展示一些示例;但是,要了解我的意思,请在 matlab 中创建一些数据,然后输入“whos”。这将显示每种数据类型的内存使用情况。元胞数组和结构比数组更占用内存,这仅仅是因为您可以将不同的日期类型组合成一个变量(字符串、布尔值、数字等)
现在,对于单元格数组和结构之间的问题,这更多是在编写、编辑和以后理解代码方面的偏好问题。我喜欢结构,因为当多人在一个项目上工作时,命名变量字段更容易理解。元胞数组需要稍微事后考虑,因为一切都基于数字索引:cellData{:,2} 又是什么?使用结构更容易:structData.address(:),哦,这些是地址。
我坚信应该使用matlab,以便尽可能容易地阅读和写作。随着更大、更复杂的项目,matlab 本身成为一个瓶颈,最好用另一种更快的语言编写代码。
正如这里所指出的,元胞数组和结构都足够通用,可以做同样的事情。但是,您可以通过数字访问一个(单元格数组),而另一个您可以通过名称访问字段(结构)。通常,您选择对可读性有意义的那个。例如,如果你想遍历一堆东西,可能把它放在一个单元格数组中,因为数字索引很方便(尽管你可以使用 structfun)。如果您想将异构数据存储在方便的包中以按名称调用(例如不同大小的矩阵),则将其存储为结构。