0

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

4

1 回答 1

2

这就是元胞数组的用途。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
于 2012-05-16T22:35:18.847 回答