如何用For Loop在Octave中快速创建20个零矩阵?
批量创建零矩阵的高效实现方法
一、用for循环创建独立变量(满足需求,但不推荐)
如果一定要生成metrics_1到metrics_20这些独立变量,可以结合sprintf和eval在for循环里完成:
for i = 1:20 % 生成变量名 var_name = sprintf('metrics_%d', i); % 执行赋值语句 eval([var_name ' = zeros(10, 19);']); end
注意:eval虽然能实现需求,但后续对这些变量的管理、批量操作会很麻烦,容易引发错误,更推荐下面的存储方式。
二、更高效的批量存储方式
1. 三维数组存储
这是MATLAB里最高效的批量数据存储方式,直接创建一个三维数组,每个维度切片对应一个10×19的零矩阵:
% 创建10行19列20层的三维零数组 metrics_array = zeros(10, 19, 20);
后续访问第k个矩阵时,只需用metrics_array(:,:,k),还能方便地对所有矩阵进行批量运算。
2. 结构体存储
如果需要保留类似metrics_1的命名结构,用结构体存储更直观:
metrics_struct = struct(); for i = 1:20 % 给结构体动态添加字段并赋值 metrics_struct.(sprintf('metrics_%d', i)) = zeros(10, 19); end
访问第k个矩阵时,使用metrics_struct.metrics_k即可,结构体字段名清晰,便于区分不同矩阵。
内容的提问来源于stack exchange,提问作者kostasmath23
相关产品推荐
相关产品推荐

