歐幾里得距離C++代碼實現


 

  歐幾里得距離

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

 

   
   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM