Matlab保存而不会丢失先前迭代的值

时间:2013-12-02 12:54:02

标签: matlab

我正在尝试在循环中保存迭代值。在此函数之后,它们将在进入下一次迭代之前执行其他函数。但是我面临的问题是,它会覆盖它们并成为000000.只能看到最后的迭代值。我该如何解决?有没有办法不使用相同的变量并保存它们?我读了关于追加但是必须使用不同的var名称n这样做并不是很好。

function DistanceMatrix(iteration,distance_row)
    load('data.mat','oridata')
    load('centroids.mat','centroids') 
        for i = distance_row:(distance_row+3)
            for j=1:300 %no.genes
              total=0;
                  for k=1:6
                      total=total+((oridata(j,k)- centroids(i,k))^2);
                  end
              DistMatrix_Val(i,j)=sqrt(total);
            end  
        end
        save('DistanceMatrix.mat','DistMatrix_Val')
        DistMatrix_Val;
     GroupMatrix(iteration,distance_row)
end

enter image description here

这是输出。我想存储所有ITERATION的价值而不是覆盖它们。可以帮助吗?

2 个答案:

答案 0 :(得分:1)

行。使用

load('DistanceMatrix.mat','DistMatrix_Val')

persistent DistMatrix_Val

就在您向我们展示的第一个load命令之前。

答案 1 :(得分:1)

我认为这是你应该做的:

functon DistanceMatrix = DistanceMatrix(iteration,distance_row)

不是将变量保存在函数末尾,而是将其返回。

返回后,您可以将变量包含在更大的变量中(例如,三维Nx4x300矩阵)

如果需要,您可以在最后保存它。