【发布时间】:2015-10-24 06:24:42
【问题描述】:
以n=4为例,如何在MATLAB中创建这样的数组?
[[0] [0 0] [0 0 0] [0 0 0 0]]
例如,有没有办法在for 循环内创建一个数组?
这就是我想要实现的(我知道这是错误的代码):
for i=1:n
table(i)=zeros(i);
end
【问题讨论】:
标签: arrays matlab jagged-arrays
以n=4为例,如何在MATLAB中创建这样的数组?
[[0] [0 0] [0 0 0] [0 0 0 0]]
例如,有没有办法在for 循环内创建一个数组?
这就是我想要实现的(我知道这是错误的代码):
for i=1:n
table(i)=zeros(i);
end
【问题讨论】:
标签: arrays matlab jagged-arrays
你需要一个cell array 来保存你的数字向量。当每个单元格的内容具有不同的大小或类型时,Matlab 中使用单元格数组。
其他 cmets:
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
同样,您可以将for 循环替换为更紧凑的arrayfun:
result = arrayfun(@(k) zeros(1,k), 1:n, 'uniformoutput', false);
【讨论】: