MATLAB 中的数组内数组

Array inside array in MATLAB

如果 n=4 例如,如何在 MATLAB 中创建这样的数组?

[[0] [0 0] [0 0 0] [0 0 0 0]]

例如,有没有办法在 for 循环中创建一个数组? 这就是我想要实现的(我知道这是错误的代码):

for i=1:n
   table(i)=zeros(i);
end

您需要一个 cell array 来保存您的数字向量。当每个单元格的内容具有不同的大小或类型时,在 Matlab 中使用单元格数组。

附加评论:

  • 我正在将您的变量 i 重命名为 k,以避免隐藏虚数单位。
  • 我还将您的变量 table 重命名为 t,以避免隐藏 table 函数。
  • zeros(k) 给出一个 kxk 零矩阵。要获得零的行向量,请使用 zeros(1,k).
  • 最好预先分配元胞数组以提高速度。

综合以上,代码为:

n = 4;
t = cell(1,n); %// preallocate: 1xn cell array of empty cells
for k = 1:n
   t{k} = zeros(1,k);
end

这给出:

>> celldisp(t)
t{1} =
     0
t{2} =
     0     0
t{3} =
     0     0     0
t{4} =
     0     0     0     0

等效地,您可以用更紧凑的 arrayfun:

替换 for 循环
result = arrayfun(@(k) zeros(1,k), 1:n, 'uniformoutput', false);