请问有什么算法之类的书 ?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 《数字信号处理》void CExam2View::SingleFFT(unsigned long ullength, unsigned int fFrameMove){ CExam2Doc* pDoc = GetDocument(); pDoc->m_EleFre->SetSize(0); pDoc->m_EleFre->SetSize(ullength); _complex temp1={0,0}; _complex temp2={0,0}; _complex cMultiNum={0,0}; _complex *fFrameElement; fFrameElement=new _complex[ullength]; for(unsigned int j=0;j<ullength;j++) { fFrameElement[j].x=pDoc->m_EleTime->GetAt(j); fFrameElement[j].y=0; } Sort(fFrameMove,fFrameElement); int step=(int)(log10(fFrameMove)/log10(2));///(double)(log2(2))); for(int i=0;i<step;i++) { for(j=0;j<fFrameMove;j+=(unsigned int)pow(2,i+1)) { for(int k=0;k<(int)pow(2,i);k++) { cMultiNum.x=cos(double(2*k*PI)/((double)fFrameMove/(double)pow(2,step-i-1))); cMultiNum.y=-sin(double(2*k*PI)/((double)fFrameMove/(double)pow(2,step-i-1))); temp1.x=fFrameElement[j+k].x+fFrameElement[j+k+(int)pow(2,i)].x*cMultiNum.x-fFrameElement[j+k+(int)pow(2,i)].y*cMultiNum.y; temp1.y=fFrameElement[j+k].y+fFrameElement[j+k+(int)pow(2,i)].x*cMultiNum.y+fFrameElement[j+k+(int)pow(2,i)].y*cMultiNum.x; temp2.x=fFrameElement[j+k].x-fFrameElement[j+k+(int)pow(2,i)].x*cMultiNum.x+fFrameElement[j+k+(int)pow(2,i)].y*cMultiNum.y; temp2.y=fFrameElement[j+k].y-fFrameElement[j+k+(int)pow(2,i)].x*cMultiNum.y-fFrameElement[j+k+(int)pow(2,i)].y*cMultiNum.x; fFrameElement[j+k]=temp1; fFrameElement[j+k+(int)pow(2,i)]=temp2; } } } for(j=0;j<ullength;j++) { pDoc->m_EleFre->SetAt(j,sqrt(pow(fFrameElement[j].x,2)+pow(fFrameElement[j].y,2))); } delete fFrameElement;}void CExam2View::Sort(unsigned int fFrameMove, _complex *fFrameElement){ unsigned int i=0,j=0,k=0; _complex temp={0,0}; unsigned int uiNv2=fFrameMove/2; unsigned int uiNm1=fFrameMove-1; while(i<uiNm1) { if(i<=j) { temp=fFrameElement[i]; fFrameElement[i]=fFrameElement[j]; fFrameElement[j]=temp; } k=uiNv2; while(k<=j) { j=j-k; k=k/2; } j=j+k; i++; }} 一条消息在网络上能传输多久 怎么调用ACTIVEX VC++ 中怎样实现查找指定目录下的所有文件 mixersetcontroldetails 如何设置录音来源为MicroPhone 发包频率的问题 请问如何从线程句柄枚举窗口? 这样为什么不能获得进程的用户名?? 大家都来讲:VC中20个 最常用的函数 - 来者给分 学习vc很长时间了,但自己感觉还是什么也不会,郁闷! List Control控件的自绘问题 键盘钩子的问题 如何得到控件的具体位置?
{
CExam2Doc* pDoc = GetDocument();
pDoc->m_EleFre->SetSize(0);
pDoc->m_EleFre->SetSize(ullength);
_complex temp1={0,0};
_complex temp2={0,0};
_complex cMultiNum={0,0};
_complex *fFrameElement;
fFrameElement=new _complex[ullength];
for(unsigned int j=0;j<ullength;j++)
{
fFrameElement[j].x=pDoc->m_EleTime->GetAt(j);
fFrameElement[j].y=0;
}
Sort(fFrameMove,fFrameElement);
int step=(int)(log10(fFrameMove)/log10(2));///(double)(log2(2)));
for(int i=0;i<step;i++)
{
for(j=0;j<fFrameMove;j+=(unsigned int)pow(2,i+1))
{
for(int k=0;k<(int)pow(2,i);k++)
{
cMultiNum.x=cos(double(2*k*PI)/((double)fFrameMove/(double)pow(2,step-i-1)));
cMultiNum.y=-sin(double(2*k*PI)/((double)fFrameMove/(double)pow(2,step-i-1)));
temp1.x=fFrameElement[j+k].x+fFrameElement[j+k+(int)pow(2,i)].x*cMultiNum.x-fFrameElement[j+k+(int)pow(2,i)].y*cMultiNum.y;
temp1.y=fFrameElement[j+k].y+fFrameElement[j+k+(int)pow(2,i)].x*cMultiNum.y+fFrameElement[j+k+(int)pow(2,i)].y*cMultiNum.x;
temp2.x=fFrameElement[j+k].x-fFrameElement[j+k+(int)pow(2,i)].x*cMultiNum.x+fFrameElement[j+k+(int)pow(2,i)].y*cMultiNum.y;
temp2.y=fFrameElement[j+k].y-fFrameElement[j+k+(int)pow(2,i)].x*cMultiNum.y-fFrameElement[j+k+(int)pow(2,i)].y*cMultiNum.x;
fFrameElement[j+k]=temp1;
fFrameElement[j+k+(int)pow(2,i)]=temp2;
}
}
}
for(j=0;j<ullength;j++)
{
pDoc->m_EleFre->SetAt(j,sqrt(pow(fFrameElement[j].x,2)+pow(fFrameElement[j].y,2)));
}
delete fFrameElement;
}void CExam2View::Sort(unsigned int fFrameMove, _complex *fFrameElement)
{
unsigned int i=0,j=0,k=0;
_complex temp={0,0};
unsigned int uiNv2=fFrameMove/2;
unsigned int uiNm1=fFrameMove-1;
while(i<uiNm1)
{
if(i<=j)
{
temp=fFrameElement[i];
fFrameElement[i]=fFrameElement[j];
fFrameElement[j]=temp;
}
k=uiNv2;
while(k<=j)
{
j=j-k;
k=k/2;
}
j=j+k;
i++;
}}