📄 lvbo.~cpp
字号:
fpa=Edit3->Text.ToDouble();
fpb=Edit4->Text.ToDouble();
fsa=Edit2->Text.ToDouble(); //Filter_form->Edit2->Text.ToDouble()
fsb=Edit5->Text.ToDouble();
Ap=Edit6->Text.ToDouble();
Asa=Edit7->Text.ToDouble();
Asb=Edit8->Text.ToDouble();
MainForm->ppEEGFilter = new EEGFilter(100,16); // LeadScheme.wLeadNum
MainForm->ppEEGFilter ->RemoveAll();
MainForm->ppEEGFilter ->AddHeightPass(Filter::CHEBY_TWO, fsa, fpa); // 0.08 0.5
MainForm->ppEEGFilter ->AddLowPass(Filter::CHEBY_TWO, fpb,fsb ); // 30 35
MainForm->ppEEGFilter ->AddNotch(50, "50Hz");
MainForm->ppEEGFilter ->SetStatus(true);
Number=Minimum(); //求出最后需要多少个点来画图
DrawRect(Image1->Canvas,0,Image1->Height,Image1->Width,0,clMenu);
DrawRect(Image1->Canvas,(Image1->Width-500)/2,220,Image1->Width-(Image1->Width-500)/2,0, clWhite);
step=10;
DrawBackGroundGrid_Mag(step,Number);
Draw_Mag(step,Number);
delete MainForm->ppEEGFilter ;
}
//----------------------------------------------------------------------------------
void __fastcall TFilter_form::BtnokClick(TObject *Sender)
{
int Number;
int step;
int p,q;
// if (Button5->Enabled==true)
// ShowMessage("要重新设计滤波器,请先按"停止"按钮!");
// else
{
//Button1->Enabled=true;
// Button2->Enabled=false;
// Button6->Enabled=false;
//RadioButton1->Checked=false;
DrawRect(Image1->Canvas ,0,Image1->Height, Image1->Width ,0, clWhite);//画背景色
CoverIn(0,Image1->Width);//画imageIn窗口的背景
fs=Edit1->Text.ToDouble();
fpa=Edit3->Text.ToDouble();
fpb=Edit4->Text.ToDouble();
fsa=Edit2->Text.ToDouble();
fsb=Edit5->Text.ToDouble();
Ap=Edit6->Text.ToDouble();
Asa=Edit7->Text.ToDouble();
Asb=Edit8->Text.ToDouble();
for(p=0;p<1000;p++)
{
for(q=0;q<16;q++)
{
MainForm->bufarray[p*16+q]=MainForm->file[p].Lead[q];
}
}
switch (5) //TMainForm::N3
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: //选中滤波器设计
{
if (fs<0)
ShowMessage("采样率fs要为正");
else if (Asa<0||Asb<0||Ap<0)
ShowMessage("衰减分贝数要为正");
else if (fpa<=0||fpb<=0||fsa<=0||fsb<=0||fpa>=fs/2||fpb>=fs/2||fsa>=fs/2||fsb>=fs/2)
ShowMessage("频率指标要为正且小于奈奎斯特频率fs/2");
else if (!(fsa<fpa&&fpa<fpb&&fpb<fsb))
ShowMessage("要符合fsa<fpa<fpb<fsb");
else if (fpa<0.8||fpb>95)
ShowMessage("通带最大范围为:0.8~95Hz");
else if (fpb-fpa<1)
ShowMessage("通频带带宽最小为1Hz,请加大通频带范围");
else if (Asb/(fsb-fpb)>15)
ShowMessage("不能设计出符合要求的滤波器,请加大过渡带fpb~fsb或减小Asb");
else
{
{
switch (ComboBox_Choice->ItemIndex) //选中的滤波器
{
case 0:
{
MainForm->ppEEGFilter = new EEGFilter(fs,16); // 100LeadScheme.wLeadNum
MainForm->ppEEGFilter ->RemoveAll();
MainForm->ppEEGFilter ->AddHeightPass(Filter::CHEBY_ONE, fsa, fpa); // 0.08 0.5
MainForm->ppEEGFilter ->AddLowPass(Filter::CHEBY_ONE, fpb,fsb ); // 30 35
MainForm->ppEEGFilter ->AddNotch(50, "50Hz");
MainForm->ppEEGFilter ->SetStatus(true);
MainForm->buf=&(MainForm->bufarray[0]);
MainForm->ppEEGFilter->Filtering(MainForm->buf,16000); //DataBuffer iDataLen
MainForm->buf=&(MainForm->bufarray[0]);
for(p=0;p<1000;p++)
{
for(q=0;q<16;q++)
{
MainForm->file[p].Lead[q]=MainForm->buf[p*16+q];
}
}
break;
}
case 1:
{
MainForm->ppEEGFilter = new EEGFilter(fs,16); // 100LeadScheme.wLeadNum
MainForm->ppEEGFilter ->RemoveAll();
MainForm->ppEEGFilter ->AddHeightPass(Filter::CHEBY_TWO, fsa, fpa); // 0.08 0.5
MainForm->ppEEGFilter ->AddLowPass(Filter::CHEBY_TWO, fpb,fsb ); // 30 35
MainForm->ppEEGFilter ->AddNotch(50, "50Hz");
MainForm->ppEEGFilter ->SetStatus(true);
MainForm->buf=&(MainForm->bufarray[0]);
MainForm->ppEEGFilter->Filtering(MainForm->buf,16000); //DataBuffer iDataLen
MainForm->buf=&(MainForm->bufarray[0]);
for(p=0;p<1000;p++)
{
for(q=0;q<16;q++)
{
MainForm->file[p].Lead[q]=MainForm->buf[p*16+q];
}
}
break;
}
case 2:
{
MainForm->ppEEGFilter = new EEGFilter(fs,16); // 100LeadScheme.wLeadNum
MainForm->ppEEGFilter ->RemoveAll();
MainForm->ppEEGFilter ->AddHeightPass(Filter::BUTTER, fsa, fpa); // 0.08 0.5
MainForm->ppEEGFilter ->AddLowPass(Filter::BUTTER, fpb,fsb ); // 30 35
MainForm->ppEEGFilter ->AddNotch(50, "50Hz");
MainForm->ppEEGFilter ->SetStatus(true);
MainForm->buf=&(MainForm->bufarray[0]);
MainForm->ppEEGFilter->Filtering(MainForm->buf,16000); //DataBuffer iDataLen
MainForm->buf=&(MainForm->bufarray[0]);
for(p=0;p<1000;p++)
{
for(q=0;q<16;q++)
{
MainForm->file[p].Lead[q]=MainForm->buf[p*16+q];
}
}
break;
}
}
// if (CheckBox1->Checked==true) //限波器
// pNotch->MagResponse() //Notch(50,"50Hz");
//Gain_Filter();
Number=Minimum(); //求出最后需要多少个点来画图
DrawRect(Image1->Canvas,0,Image1->Height,Image1->Width,0,clMenu);
DrawRect(Image1->Canvas,(Image1->Width-500)/2,220,Image1->Width-(Image1->Width-500)/2,0, clWhite);
if (fs<=100)
step=10;
else if (fs<=200)
step=5;
else if (fs<=300)
step=3;
else if (fs<=500)
step=2;
else
step=10;
DrawBackGroundGrid_Mag(step,Number);
Draw_Mag(step,Number);
delete MainForm->ppEEGFilter ;
}
}
break;
}
default:
{
ShowMessage("请选择设计滤波器的类型!");
break;
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TFilter_form::BtncancleClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -