首页 > 编程语言 >C++ 相关系数的计算以及在图像配准领域应用演示

C++ 相关系数的计算以及在图像配准领域应用演示

时间:2023-06-28 16:14:09浏览次数:40  
标签:std 配准 double 相关系数 C++ vector sum mean

相关系数(皮尔逊相关系数)公式如下

 

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

// 计算平均值
double mean(vector<double> v) {
    double sum = 0;
    for (int i = 0; i < v.size(); i++) {
        sum += v[i];
    }
    return sum / v.size();
}

// 计算协方差
double covariance(vector<double> x, vector<double> y) {
    double x_mean = mean(x);
    double y_mean = mean(y);
    double sum = 0;
    for (int i = 0; i < x.size(); i++) {
        sum += (x[i] - x_mean) * (y[i] - y_mean);
    }
    return sum / x.size();
}

// 计算相关系数
double correlation(vector<double> x, vector<double> y) {
    double cov = covariance(x, y);
    double x_std = sqrt(covariance(x, x));
    double y_std = sqrt(covariance(y, y));
    return cov / (x_std * y_std);
}


int main() {
    vector<double> x = { 2, 3, 4, 5, 6};
    vector<double> y = { 20, 30, 40, 50, 61};
    cout << "Correlation: " << correlation(x, y) << endl;
    return 0;
}
View Code

运行结果

 

标签:std,配准,double,相关系数,C++,vector,sum,mean
From: https://www.cnblogs.com/lizhiqiang0204/p/17511694.html

相关文章

  • C++学习---qt的公有类、私有类、Q_Q、Q_D、二进制兼容
    1、二进制兼容如果程序从一个以前版本的库动态链接到新版本的库之后,能够继续正常运行,而不需要重新编译,那么我们就说这个库是二进制兼容的。如果不能保证库的二进制兼容性,就意味着每次发布库的新版本时,依赖该库的所有程序都必须重新编译才能正常运行。2、公有类、私有类是解决......
  • C++ 相关系数的计算以及作用
    #include<iostream>#include<vector>#include<cmath>usingnamespacestd;//计算平均值doublemean(vector<double>v){doublesum=0;for(inti=0;i<v.size();i++){sum+=v[i];}returnsum/v.si......
  • c++中static_cast用法
    static_cast是指显性类型强制转换,如: 结果为a=120.和C语言学习时的显性意义一样,但是编译器会对此类型转换进行检查。另外还有另外3种转换:const属性用const_cast。基本类型转换用static_cast。多态类之间的类型转换用daynamic_cast。不同类型的指针类型转换用reinterprete......
  • C++入门
    c++入门--变量与基本类型如果你还没有接触过编程,想先体验一下编程的乐趣。请看我的c++入门(1)--输入输出,代码运行顺序及其控制。此文开始学习变量以及基本类型。原始内置类型(PrimitiveBuild-inTypes)两类:算术类型(arithmetictypes)和void。我们主要讲解算术类型。算术类型(Arithmetic......
  • C++ 命名空间
     假设这样一种情况,当一个班上有两个名叫Zara的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在C++应用程序中。例如,您可能会写一个名为xyz()的函数,在另一个可用的库中也存在一个相同的......
  • C/C++自助点餐系统[2023-06-28]
    C/C++自助点餐系统[2023-06-28]面向对象程序课程设计任务书【题目】自助点餐系统【目的】通过设计一个小型的自助点餐系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。【要求】1、每个学生必须独立完成;......
  • C++ - 连接mysql数据库
    1.准备工作1.1把libmysql.dll和libmysql.lib文件复制到工程目录下首先,我们要找到刚刚开始下载的MySQL数据库的安装目录,打开目录,并且将libmysql.dll文件和libmysql.lib文件复制到工程目录下~我安装MySQL的路径:C:\ProgramFiles\MySQL\MySQLServer5.7\lib 1.2......
  • C++ summary
    结构体和变量C++不提倡使用外部声明的变量,但是提倡使用外部声明的结构体。在外部声明符号常量更合理。符号常量编译后在代码区,不可更改,不可寻址是指令的一部分#define标识符常量enum{};consttypeA=B;结构体初始化={}且等号不必须不允许缩窄转换(宽字节赋......
  • C++中cout打印内容丢失
    原文地址:https://www.cnblogs.com/liqinglucky/p/cout.html写代码时遇到C++中cout打印不全的问题。现象代码调整前:我有个函数c_func(output,input,inlen)定义在原来的文件file.c里,然后在c++中调用了这个函数。file.cpp文件里的调用格式如下:cpp_func(){ c_func(output......
  • C++面试八股文:static_cast了解一下?
    C++面试八股文:static_cast了解一下?某日二师兄参加XXX科技公司的C++工程师开发岗位第20面:面试官:C++中支持哪些类型转换?二师兄:C++支持C风格的类型转换,并在C++11引入新的关键字规范了类型转换。二师兄:C++11引入四种新的类型转换,分别是static_cast、dynamic_cast、const_cast......