这在 Matlab 中是非法的
a = [[1];[2 3]]
在允许这样做的语言中,这称为嵌套数组。
我找到了一种在 Matlab 中执行相同操作的方法:
a = {[1];[2 3]}
这叫什么? 如何在无需编写大量代码的情况下用固定大小(例如 100)初始化这样的变量?
最佳答案
它被称为元胞数组。
使用命令 cell
对其进行初始化
cellArray = cell(3,2); %# this makes a 3-by-2 cell array
存储不同对象集合的另一种方法是 struct ,您可以像这样初始化
myStruct = struct('firstField',1,'secondField',[2 3])
结构体相对于单元格的优点是字段被命名,这使得处理和记录变得更加容易。如果您想经常操作数据,单元格可以非常方便地存储数据,因为您可以使用 cellfun
等。跟他们。我发现自己经常使用单元格将数据保存在函数内,但使用结构(或对象)在函数之间传递数据。
此外,如果您有一个数字列表并希望将它们分配给元胞数组的元素,则可以使用 num2cell
,它将数组的每个元素分别放入元胞数组的一个元素中,或 mat2cell
,以防您想不均匀地分割数组。
a = {1,[2 3]}
相当于
b = mat2cell([1 2 3],[1 1],[1 2]);
关于arrays - 在 matlab 中,我应该使用什么来收集不同对象的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4139498/