我正在尝试创建一个容器,其中包含3个列表,其中每个列表是一个任意大小的列表,包含任意大小的列表。以下是我将要做的事情的思路(在Matlab中没有很多经验,因此可能有一种更优雅的方式)
my_data = [[] [] []];
for m = 1 : M
list1 = [];
list2 = [];
list3 = [];
for n = 1 : N
if something holds
list1 = [list1 ftn(n)];
list2 = [list2 ftn2(n)];
list3 = [list3 ftn3(n)];
end
end
if something else holds
my_data(1) = [my_data(1) list1];
my_data(2) = [my_data(2) list2];
my_data(3) = [my_data(3) list3];
end
end
这段代码实际上并没有运行......我如何在Matlab中做这样的事情?
答案 0 :(得分:2)
这是cell arrays的用途。 Matlab不允许你做非矩形常规数组(正如你所发现的那样),但是单元格数组允许你做一般对象的数组,包括标准数组。
my_data = {{} {} {}};
for m = 1 : M
list1 = [];
list2 = [];
list3 = [];
for n = 1 : N
if something
list1 = [list1 something];
list2 = [list2 something];
list3 = [list3 something];
end
end
if something
my_data{1}{end+1} = list1;
my_data{2}{end+1} = list2;
my_data{3}{end+1} = list3;
end
end