歐幾里得距離
歐幾里得距離定義: 歐幾里得距離( 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
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; }
