2017-04-26 637 views
0

这是我尝试代码:如何在for循环中保存变量中的值而不用在MATLAB中覆盖?

for i = 1:length(X) %X is a CSV matrix 50x4 
    Y = X(i, :) % fetching each row of X 
    dist = pdist2(Y, X2, 'euclidean') %X2 is another matrix 100x4 
    sumOfdist = sum(dist); 
end; 
meanResult = mean(sum) 

sumOfdist总是会在每次迭代覆盖,只有最后一次迭代因此我meanResult店的平均值。通过每次迭代存储所有值的总和并在forloop之外使用它来计算均值的最佳方式是什么?而不使用全局变量?

+0

首先,您应该将您的变量“sum”重命名为其他值;你可以写sum1 = sum1 + sum(dist) – Anonymous

+0

对,这不是总和 - 只是在这里调用它。 – 221b

回答

2

你能避免使用循环,这一翻译只是做:

X=randn(6, 4); 
X2=randn(10,4); 
D = pdist2(X,X2,'euclidean'); 
sums=sum(D); 
res=mean(sums) 

在上面的代码中,D第i行由从X2每一行的X(i,:)距离的名单。然后在sums我们在D存储每行的总和。

+0

将X2中每一行X的每一行的所有欧几里得距离的总和存储在D中吗? – 221b

+0

是的,这将被存储在总和。例如,总和中的第一个元素是X中第一行到X2中每一行的所有距离的总和 –

相关问题