• 欧几里得距离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;
    }
       
       
  • 相关阅读:
    VSS使用
    Delphi简单数据库连接程序
    为表增加字段与拷贝数据到另一个表
    VSTS 使用
    Delphi实现个相似的功能界面共用一个窗体
    看代码笔记
    数据库安全管理
    函数
    【USACO】Ordered Fractions 顺序的分数
    C# 专业数据库连接配置界面
  • 原文地址:https://www.cnblogs.com/aijianiula/p/2480500.html
Copyright © 2020-2023  润新知