对于给定的矢量$(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