www.pudn.com > QQandSample.rar > Caculate.cpp


// Caculate.cpp: implementation of the CCaculate class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "Rotation.h" 
#include "Caculate.h" 
#include "math.h" 
#include "SigStruct.h" 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
double const pi=3.141592653589; 
CCaculate::CCaculate() 
{ 
 
} 
 
CCaculate::~CCaculate() 
{ 
 
} 
/////////////////////// 
/* 
计算sinc函数: 
	输入: 
	      数组,频率,相位,幅值,和点数 
	输出: 
	     计算所得的sinc值 
*/ 
//////////////////////// 
 
void CCaculate::sincWave(double *y, double f, double fs,double ph, double a, int n) 
{ 
	 
	y[n/2]=a; 
	for(int i=1;ia; 
	double f=signal->f; 
	double fs=signal->fs; 
	double ph=signal->ph; 
	long n=signal->n; 
	if(num==0) 
	for(int i=0;idata[i]=1*sin(2*pi*f*i/fs+ph)+0.7*sin(2*pi*sqrt(2)*f*i/fs+ph)+ 
			0.5*sin(2*pi*3*f*i/fs+ph)+0.3*sin(2*pi*4*f*i/fs+ph); 
	 
	} 
	return 1; 
 
} 
void CCaculate::AddPoint(SignalType *m_signal,int num) 
{ 
	double a=m_signal->a; 
	double f=m_signal->f; 
	double fs=m_signal->fs; 
	double ph=m_signal->ph; 
	int n=m_signal->n; 
	for(int i=0;idata[i]=m_signal->data[i+1]; 
		 
	} 
	m_signal->data[n-1]=a*sin(2*pi*f*(n-1+num)/fs+ph)+0.7*sin(2*pi*f*sqrt(2)*(n-1+num)/fs+ph*2/3)+ 
			0.5*sin(2*pi*f*3*(n-1+num)/fs+ph*2/5)+0.3*sin(2*pi*f*sqrt(5)*(n-1+num)/fs+ph*3/7); 
	 
}