📄 fir_c.cpp
字号:
#include <math.h>
#include <vcl.h>
#pragma hdrstop
#include "FIR_C.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
#define PI 3.1415926
#define FIRNUMBER 25
float t30sp=138.5,t30pv=130.5,t30mv=50.2;
int sincoswave[480];
int sinwave[480];
int t1;
float fHn[FIRNUMBER]={ 0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,
-0.018,0.049,-0.02,0.11,0.28,0.64,0.28,
-0.11,-0.02,0.049,-0.018,-0.009,0.01,
-0.002,-0.002,0.001,0.0,0.0
};
float fXn[FIRNUMBER]={ 0.0 };
float fInput,fOutput;
float fSignal1,fSignal2;
float fStepSignal1,fStepSignal2;
float f2PI;
int i;
float fIn[256],fOut[256];
int nIn,nOut;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
nIn=0; nOut=0;
f2PI=2*PI;
fSignal1=0.0;
fSignal2=PI*0.1;
fStepSignal1=2*PI/30;
fStepSignal2=2*PI*1.4;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
fInput = InputWave();
Edit1->Text=FloatToStrF(fInput,0,4,4);
for(int i=0;i<479;i++)
{
sincoswave[i]=sincoswave[i+1];
sincoswave[479]=fInput;
}
fOutput=FIR();
Edit2->Text=FloatToStrF(fOutput,0,4,4);
for(int i=0;i<479;i++)
{
sinwave[i]=sinwave[i+1];
sinwave[479]=80+fOutput;
}
Image1->Picture->LoadFromFile("qushi.bmp");
Image1-> Canvas->Pen->Width = 1;
Image1-> Canvas->Pen->Color = clRed;
Image1->Canvas->MoveTo(0,300);
for(int i=0;i<480;i++)
{
Image1->Canvas->LineTo(i,300-sincoswave[i]);
}
Image1-> Canvas->Pen->Color = clBlue;
Image1->Canvas->MoveTo(0,300);
for(int i=0;i<480;i++)
{
Image1->Canvas->LineTo(i,300-sinwave[i]);
}
}
//-----------------------------------------------------------
float TForm1::InputWave()
{
//fXn[0]=120+50*sin(t1*5*3.1415/360);
//t1++;
for ( i=FIRNUMBER-1;i>0;i-- ) fXn[i]=fXn[i-1];
fXn[0]=100+25*(sin(fSignal1)+cos(fSignal2)/6.0);
fSignal1+=fStepSignal1;
if ( fSignal1>=f2PI ) fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if ( fSignal2>=f2PI ) fSignal2-=f2PI;
return(fXn[0]);
}
//-----------------------------------------------------------
float TForm1::FIR()
{
float fSum;
fSum=0;
for ( i=0;i<FIRNUMBER;i++ )
{
fSum+=(fXn[i]*fHn[i]);
}
return(fSum);
}
void __fastcall TForm1::Button5Click(TObject *Sender)
{
if (Edit15->Text=="135246")
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
if(Timer1->Enabled==true)
{
Timer1->Enabled=false ;
Button6->Caption="Start" ;
}
else
{
Timer1->Enabled=true ;
Button6->Caption="Stop" ;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -