Matlab 保存循环数据

Matlab saving for loop data

我有一个类似

的功能
 for i = 1:n
     [A,B] = generatecomp(i, a, b);
 end

我想保存这些 A 和 B 值,它们是 n x 1 矩阵。 我尝试使用以下代码解决问题:

A=[];
B=[];
    for i=1:n
    [A1,B1] = generatecomp(i, a, b);
    A=[A;A1]
    B=[B,B1]
    end
save('ABval.mat','A','B')

bu 问题是矩阵的长度随着 'n' 值的变化而变化。如何将所有 A 和 B 值保存在同一个 .mat 文件中?

如果您想要 AB 的所有中间值都保存在文件中,那么您需要将 save 调用 放在 你的 for 循环。

for k = 1:n
    [A1,B1] = generatecomp(k, a, b);
    A=[A,A1]
    B=[B,B1]
    filename = sprintf('ABval%d.mat', k);
    save(filename, 'A', 'B')
end

或者,如果您希望它们都在同一个文件中,那么您可以将中间值存储在元胞数组中(这样做的额外好处是它们不必具有相同的维度),然后保存整个元胞数组到文件。

% Cell arrays to store intermediate values
A = cell(1, n);
B = cell(1, n);

for k = 1:n
    [A{k}, B1{k}] = generatecomp(k, a, b);
end

save('ABvals.mat', 'A', 'B')