保存变量:在每次迭代MATLAB中为新行添加新值

时间:2017-11-21 13:51:32

标签: matlab save

我有一个循环如下

for chnum=1:300
   PI=....
   area=....

   save ('Result.mat' ,'chnum' ,'PI' ,'area',' -append') %-append
    %% I like to have sth like below
    % 1, 1.2,3.7
    % 2, 1,8, 7.8
    % .....

end

但它没有保存。你知道为什么吗?

最佳

2 个答案:

答案 0 :(得分:2)

问题分析

matlab help page for save表示Activity3选项会将新变量附加到已保存的文件中。它不会将新行附加到已保存的矩阵中。

解决方案

要实现您的目标,您必须将数据存储在矩阵中,并通过一次调用-append来保存整个矩阵。

save()

为了更好的内存管理,我添加了数组的预分配。

答案 1 :(得分:2)

嗯,即使它不是问题的一部分,我也不认为你正在使用一种好的方法来保存你的计算。在磁盘上执行的读/写操作(在这种情况下保存文件上的数据)在时间上非常昂贵。这就是我建议你按照以下步骤进行的原因:

res = NaN(300,2)

for chnum = 1:300
    PI = ...
    area = ...

    res(chnum,:) = [PI area]; % saving chnum looks a bit like an overkill since you can retrieve it just using size(res,1) when you need it...
end

save('Result.mat','res');

基本上,不是处理行并将其保存到文件中,而是处理另一行并将其保存到文件中等...您只需将整个数据保存到矩阵中,然后将最终结果保存到文件中