NoM*_*Man 3 arrays matlab jagged-arrays
如果n=4例如,如何创建在MATLAB这样一个数组?
[[0] [0 0] [0 0 0] [0 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
例如,有没有办法在for循环内创建数组?这是我想要实现的(我知道这是错误的代码):
for i=1:n
table(i)=zeros(i);
end
Run Code Online (Sandbox Code Playgroud)
您需要一个单元格数组来保存数字向量.当每个细胞的内容具有不同的大小或类型时,在Matlab中使用细胞阵列.
附加评论:
i为k,以避免影响虚构单位.table为t,以避免影响该table函数.zeros(k)给出一个零的kx k矩阵.要获得零矢量的行向量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
Run Code Online (Sandbox Code Playgroud)
这给出了:
>> celldisp(t)
t{1} =
0
t{2} =
0 0
t{3} =
0 0 0
t{4} =
0 0 0 0
Run Code Online (Sandbox Code Playgroud)
等效地,您可以用for更紧凑的方式替换循环arrayfun:
result = arrayfun(@(k) zeros(1,k), 1:n, 'uniformoutput', false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |