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)
给出一个 k
xk
零矩阵。要获得零的行向量,请使用 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);
如果 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)
给出一个k
xk
零矩阵。要获得零的行向量,请使用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);