如何创建任意大小的列表列表

时间:2012-05-16 22:32:27

标签: matlab

我正在尝试创建一个容器,其中包含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中做这样的事情?

1 个答案:

答案 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