Matlab保存循环数据

时间:2016-03-11 13:24:36

标签: matlab loops for-loop save

我有一个像

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

我希望保存这些n和1矩阵的A和B值。 我尝试使用以下代码解决问题:

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

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

1 个答案:

答案 0 :(得分:2)

如果您希望文件中保存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')