對於給定的矢量$(X_1,X_2,\ ldots,x_n)$我試圖計算來計算矢量誤差更快地
我寫了下面的代碼
for l = 1:n
for k = 1:n
error = error + norm(x(i)-x(j))
end
end
這段代碼並不快,特別是當$ n $很大時。我知道我實際上是雙重計數......但我怎麼可能避免它?我如何加快我的代碼?
謝謝!
對於給定的矢量$(X_1,X_2,\ ldots,x_n)$我試圖計算來計算矢量誤差更快地
我寫了下面的代碼
for l = 1:n
for k = 1:n
error = error + norm(x(i)-x(j))
end
end
這段代碼並不快,特別是當$ n $很大時。我知道我實際上是雙重計數......但我怎麼可能避免它?我如何加快我的代碼?
謝謝!
如何利用簡單的速度嗎?
for a=1:n
for b=a+1:n
error = error + 2*norm(x(a)-x(b))
end
end
對於標量,norm
只是給abs
。 所以,
error = sum(abs(bsxfun(@minus, error,error')))
會做同樣的事情。
也檢出pdist
這將使用向量規範,以更快的方式做到這一點。
是否存在內循環,如數學符號中的代碼所示? – Steephen