欧几里得距离
欧几里得距离定义: 欧几里得距离( Euclidean distance)也称欧式距离,它是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。
在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是
d = sqrt((x1-x2)^+(y1-y2)^)
三维的公式是
d=sqrt((x1-x2)^+(y1-y2)^+(z1-z2)^)
推广到n维空间,欧式距离的公式是
d=sqrt( ∑(xi1-xi2)^ ) 这里i=1,2..n
xi1表示第一个点的第i维坐标,xi2表示第二个点的第i维坐标
n维欧氏空间是一个点集,它的每个点可以表示为(x(1),x(2),...x(n)),其中x(i)(i=1,2...n)是实数,称为x的第i个坐标,
两个点x和y=(y(1),y(2)...y(n))之间的距离d(x,y)定义为上面的公式.
欧氏距离看作信号的相似程度。 距离越近就越相似,就越容易相互干扰,误码率就越高。
下面是c++代码实现:
View Code

#include<iostream> #include<cmath> using namespace std; //calculate the Euclid's distant /////////////////////////////////////////////////////////////////////////// class Distance{ public: Distance(int m,double array1[],double array2[]); void distance(double a[],double b[]);//calculate the distance void set(double array1[],double array2[]); double get(){ return Result; } ~Distance(){} private: int n; double* a;//declare two objects double* b; double square; double Result;// The result of Euclid's distanst }; Distance::Distance(int m,double array1[],double array2[]){ n=m; set(array1,array2); distance(a,b); } void Distance::set(double array1[],double array2[]){ a=array1; b=array2; } void Distance::distance(double a[],double b[]){ square=0; for(int i=0;i<n;i++){ square+=(a[i]-b[i])*(a[i]-b[i]); } Result=sqrt(square/n); } /////////////////////////////////////////////////////////////////////// //the main function int main(){ int n; cout<<"Please input the dimensions n:"; cin>>n; double a[n]; double b[n]; cout<<"Input the "<<n<<" number for the dimendions of a1:"; for(int i=0;i<n;i++) cin>>a[i]; cout<<"Input the "<<n<<" number for the dimendions of b1:"; for(int i=0;i<n;i++) cin>>b[i]; Distance distance(n,a,b); cout<<"The distance is:"<<distance.get()<<endl; return 0; }