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

📄 lvbo.~cpp

📁 脑电信号分析软件
💻 ~CPP
📖 第 1 页 / 共 2 页
字号:
        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 + -