correl.cpp

来自「C++数值算法原书代码」· C++ 代码 · 共 26 行

CPP
26
字号
#include "nr.h"

void NR::correl(Vec_I_DP &data1, Vec_I_DP &data2, Vec_O_DP &ans)
{
	int no2,i;
	DP tmp;

	int n=data1.size();
	Vec_DP temp(n);
	for (i=0;i<n;i++) {
		ans[i]=data1[i];
		temp[i]=data2[i];
	}
	realft(ans,1);
	realft(temp,1);
	no2=n>>1;
	for (i=2;i<n;i+=2) {
		tmp=ans[i];
		ans[i]=(ans[i]*temp[i]+ans[i+1]*temp[i+1])/no2;
		ans[i+1]=(ans[i+1]*temp[i]-tmp*temp[i+1])/no2;
	}
	ans[0]=ans[0]*temp[0]/no2;
	ans[1]=ans[1]*temp[1]/no2;
	realft(ans,-1);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?