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);
}