⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fftdrawingdlg.cpp

📁 实现快速傅立叶算法
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	    pDC->Rectangle(rcClient);
	    int dx=rcClient.Width();
    	int dy=rcClient.Height();
		double max=fabs(shuju[0]);
		cishu=0;
		int pp;
		for( int p=0;p<N;p++)
		{
	    	if(fabs(shuju[p])>max)
			{
				max=fabs(shuju[p]);
				pp=p;
			}
		}
		if(max>(dy/2-10))
		{
			fuhao=-1;
			while(max>(dy/2-10))
			{
		     	max=max/2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]/2;
			}
		}
		else if(max<(dy/4-5))
		{
			fuhao=1;
			while(max<(dy/4-5))
			{
		     	max=max*2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]*2;
			}
		}
		else
			fuhao=0;
	
		//for(p=0;p<N;p++)
	    //	if(fabs(shuju[p])>max)
	    //		maxzhi=shuju[p];
     
//		max=fabs(shuju[0]);
		for( p=0;p<N;p++)
	    	if(fabs(shuju[p])==max)
				maxzhi=shuju[p];
        
        
        //////////////以上是将数据处理成能在显示区域显示的值
	


	}

    Invalidate();
	


	

}

void CFftDrawingDlg::OnXubu() 
{
	// TODO: Add your control notification handler code here
	if(b_shuju!=1)
		MessageBox ("请先倒入数据计算fft, 请点击  ‘ 倒入数据 ’ !","提示" );
	if(b_shuju==1)
	{
		shuomingwenzi=2;
		for( int i=0;i<N;i++)
			shuju[i]=xubu[i];
        
	
		///////////////以下是将数据处理成能在显示区域显示的值
		CWnd *pWnd = GetDlgItem(IDC_STATIC);
        CDC *pDC = pWnd->GetDC();
        CRect rcClient;
	    pWnd->GetClientRect(rcClient);
	    pDC->Rectangle(rcClient);
	    int dx=rcClient.Width();
    	int dy=rcClient.Height();
		double max=fabs(shuju[0]);
		cishu=0;
		int pp;
		for( int p=0;p<N;p++)
		{
	    	if(fabs(shuju[p])>max)
			{
				max=fabs(shuju[p]);
				pp=p;
			}
		}
		if(max>(dy/2-10))
		{
			fuhao=-1;
			while(max>(dy/2-10))
			{
		     	max=max/2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]/2;
			}
		}
		else if(max<(dy/4-5))
		{
			fuhao=1;
			while(max<(dy/4-5))
			{
		     	max=max*2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]*2;
			}
		}
		else
			fuhao=0;
		//max=fabs(shuju[0]);
		//for( p=0;p<N;p++)
		//{
	    //	if(fabs(shuju[p])>max)
		//	{
		//		max=fabs(shuju[p]);
		//		maxzhi=shuju[p];
		//	}
		//}
        for( p=0;p<N;p++)
	    	if(fabs(shuju[p])==max)
				maxzhi=shuju[p];
        
        //////////////以上是将数据处理成能在显示区域显示的值


	}
	
	Invalidate();
}

void CFftDrawingDlg::OnMo() 
{
	// TODO: Add your control notification handler code here
	if(b_shuju!=1)
		MessageBox ("请先倒入数据计算fft,请点击 ‘  倒入数据  ’  !","提示" );
	if(b_shuju==1)
	{
		shuomingwenzi=3;
		for( int i=0;i<N;i++)
			shuju[i]=sqrt(shibu[i]*shibu[i]+xubu[i]*xubu[i]);
      
		
		///////////////以下是将数据处理成能在显示区域显示的值
		CWnd *pWnd = GetDlgItem(IDC_STATIC);
        CDC *pDC = pWnd->GetDC();
        CRect rcClient;
	    pWnd->GetClientRect(rcClient);
	    pDC->Rectangle(rcClient);
	    int dx=rcClient.Width();
    	int dy=rcClient.Height();
		double max=fabs(shuju[0]);
		cishu=0;
		int pp;
		for(int p=0;p<N;p++)
		{
	    	if(fabs(shuju[p])>max)
			{
				max=fabs(shuju[p]);
				pp=p;
			}
		}
		if(max>(dy/2-10))
		{
			fuhao=-1;
			while(max>(dy/2-10))
			{
		     	max=max/2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]/2;
			}
		}
		else if(max<(dy/4-5))
		{
			fuhao=1;
			while(max<(dy/4-5))
			{
		     	max=max*2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]*2;
			}
		}
		else
			fuhao=0;
		//max=fabs(shuju[0]);
		//for( p=0;p<N;p++)
		//{
	    //	if(fabs(shuju[p])>max)
		//	{
		//		max=fabs(shuju[p]);
		//		maxzhi=shuju[p];
		//	}
	//	}
        for( p=0;p<N;p++)
	    	if(fabs(shuju[p])==max)
				maxzhi=shuju[p];
        
        //////////////以上是将数据处理成能在显示区域显示的值

	} 

	Invalidate();
}

void CFftDrawingDlg::OnXiangjiao() 
{
	// TODO: Add your control notification handler code here
	if(b_shuju!=1)
		MessageBox ("请先倒入数据计算fft,请点击‘  倒入数据  ’ !","提示" );
	if(b_shuju==1)
	{
		shuomingwenzi=4;
		for( int i=0;i<N;i++)
			shuju[i]=atan(xubu[i]/shibu[i]);    /////XI[i]/XR[i]
         
	
		///////////////以下是将数据处理成能在显示区域显示的值
		CWnd *pWnd = GetDlgItem(IDC_STATIC);
        CDC *pDC = pWnd->GetDC();
        CRect rcClient;
	    pWnd->GetClientRect(rcClient);
	    pDC->Rectangle(rcClient);
	    int dx=rcClient.Width();
    	int dy=rcClient.Height();
		double max=fabs(shuju[0]);
		cishu=0;
		int pp;
		for( int p=0;p<N;p++)
		{
	    	if(fabs(shuju[p])>max)
			{
				max=fabs(shuju[p]);
				pp=p;
			}
		}
		if(max>(dy/2-10))
		{
			fuhao=-1;
			while(max>(dy/2-10))
			{
		     	max=max/2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]/2;
			}
		}
		else if(max<(dy/4-5))
		{
			fuhao=1;
			while(max<(dy/4-5))
			{
		     	max=max*2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]*2;
			}
		}
		else 
			fuhao=0;
		//max=fabs(shuju[0]);
		//for( p=0;p<N;p++)
		//{
	    //	if(fabs(shuju[p])>max)
		//	{
		//		max=fabs(shuju[p]);
		//		maxzhi=shuju[p];
		//	}
		//}
		for( p=0;p<N;p++)
	    	if(fabs(shuju[p])==max)
				maxzhi=shuju[p];
        
        
        //////////////以上是将数据处理成能在显示区域显示的值


     Invalidate();

	}
	
}



void CFftDrawingDlg::OnGonglvpu() 
{
	// TODO: Add your control notification handler code here
	if(b_shuju!=1)
		MessageBox ("请先倒入数据计算fft,请点击‘   倒入数据  ’ !","提示" );
	if(b_shuju==1)
	{
		shuomingwenzi=5;
		for(int i=0;i<N;i++)
			shuju[i]=(shibu[i]*shibu[i]+xubu[i]*xubu[i])/N*128;
       
	
		///////////////以下是将数据处理成能在显示区域显示的值
		CWnd *pWnd = GetDlgItem(IDC_STATIC);
        CDC *pDC = pWnd->GetDC();
        CRect rcClient;
	    pWnd->GetClientRect(rcClient);
	    pDC->Rectangle(rcClient);
	    int dx=rcClient.Width();
    	int dy=rcClient.Height();
		double max=fabs(shuju[0]);
		cishu=0;
		int pp;
		for( int p=0;p<N;p++)
		{
	    	if(fabs(shuju[p])>max)
			{
				max=fabs(shuju[p]);
				pp=p;
			}
		}
		if(max>(dy/2-10))
		{
			fuhao=-1;
			while(max>(dy/2-10))
			{
		     	max=max/2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]/2;
			}
		}
		else if(max<(dy/4-5))
		{
			fuhao=1;
			while(max<(dy/4-5))
			{
		     	max=max*2;
		    	cishu++;
			}
	    
	    	for( p=0;p<N;p++)
			{
	    		for( int j=0;j<cishu;j++)
	     			shuju[p]=shuju[p]*2;
			}
		}
		else 
			fuhao=0;
        //max=fabs(shuju[0]);
		//for( p=0;p<N;p++)
		//{
	    //	if(fabs(shuju[p])>max)
		//	{
		//		max=fabs(shuju[p]);
		//		maxzhi=shuju[p];
		//	}
		//}
        for( p=0;p<N;p++)
	    	if(fabs(shuju[p])==max)
				maxzhi=shuju[p];
        //////////////以上是将数据处理成能在显示区域显示的值




	}
	Invalidate();
}

CScrollBar* CFftDrawingDlg::GetScrollBarCtrl(int nBar) const
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::GetScrollBarCtrl(nBar);
}

void CFftDrawingDlg::OnBnClickedIscaoed()
{
	// TODO: Add your control notification handler code here
	
	IDC_xiecao="fdsgdse";
	Invalidate(1);
}

void CFftDrawingDlg::OnBnClickedCao()
{
	// TODO: Add your control notification handler code here

}

⌨️ 快捷键说明

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