Octave 使用 For 循环创建矩阵

问题描述 投票:0回答:2

我需要你的洞察力。我想创建 20 个不同的零矩阵,如下所示:

metrics_1 = zeros(10, 19);
metrics_2 = zeros(10, 19);
metrics_3 = zeros(10, 19);
metrics_4 = zeros(10, 19);
metrics_5 = zeros(10, 19);
metrics_6 = zeros(10, 19);
metrics_7 = zeros(10, 19);
metrics_8 = zeros(10, 19);
metrics_9 = zeros(10, 19);
metrics_10 = zeros(10, 19);
metrics_11 = zeros(10, 19);
metrics_12 = zeros(10, 19);
metrics_13 = zeros(10, 19);
metrics_14 = zeros(10, 19);
metrics_15 = zeros(10, 19);
metrics_16 = zeros(10, 19);
metrics_17 = zeros(10, 19);
metrics_18 = zeros(10, 19);
metrics_19 = zeros(10, 19);
metrics_20 = zeros(10, 19);

如何使用 for 循环更快地执行此操作?

非常感谢

loops for-loop matrix octave zero
2个回答
1
投票

我猜你的意思是“更容易”?

无需创建 20 大小为 10x19 的二维数组,您只需创建一个大小为 10x19x20

的 3d 数组

metrics = zeros(10,19,20);


0
投票

如果你不想按照 PierU 的建议做 3D 矩阵 ,你可以制作一个元胞数组。而不是

metrics_8
,你会做
metrics{8}
。您可以按如下方式创建它:

metrics = cell(20,1);
for i = 1:numel(metrics)
   metrics{i} = zeros(10, 19);
end

在这种情况下,每个矩阵可以有不同的大小。如果它们的大小始终相同,则 3D 数组方法的内存效率更高。

用同一数组的副本填充元胞数组的所有元素的快捷方式是:

metrics = cell(20,1);
[metrics{:}] = deal(zeros(10, 19));
© www.soinside.com 2019 - 2024. All rights reserved.