예제 #1
0
        private void AnalyzeEquirippleLpFilter()
        {
            var order      = 47;
            var fp         = 0.15;
            var fa         = 0.18;
            var ripplePass = 1.0;   // dB
            var rippleStop = 42.0;  // dB

            if (filterParamsDataGrid.RowCount > 0)
            {
                order      = Convert.ToInt32(filterParamsDataGrid.Rows[0].Cells[1].Value);
                fp         = Convert.ToDouble(filterParamsDataGrid.Rows[1].Cells[1].Value);
                fa         = Convert.ToDouble(filterParamsDataGrid.Rows[2].Cells[1].Value);
                ripplePass = Convert.ToDouble(filterParamsDataGrid.Rows[3].Cells[1].Value);
                rippleStop = Convert.ToDouble(filterParamsDataGrid.Rows[4].Cells[1].Value);
            }

            orderNumeratorTextBox.Text   = (order - 1).ToString();
            orderDenominatorTextBox.Text = (order - 1).ToString();

            var wp = Remez.DbToPassbandWeight(ripplePass);
            var wa = Remez.DbToStopbandWeight(rippleStop);

            _filter = new FirFilter(DesignFilter.FirEquirippleLp(order, fp, fa, wp, wa));

            filterParamsDataGrid.RowCount = 5;
            filterParamsDataGrid.Rows[0].Cells[0].Value = "order";
            filterParamsDataGrid.Rows[0].Cells[1].Value = order;
            filterParamsDataGrid.Rows[1].Cells[0].Value = "fp";
            filterParamsDataGrid.Rows[1].Cells[1].Value = fp;
            filterParamsDataGrid.Rows[2].Cells[0].Value = "fa";
            filterParamsDataGrid.Rows[2].Cells[1].Value = fa;
            filterParamsDataGrid.Rows[3].Cells[0].Value = "rp";
            filterParamsDataGrid.Rows[3].Cells[1].Value = ripplePass;
            filterParamsDataGrid.Rows[4].Cells[0].Value = "rs";
            filterParamsDataGrid.Rows[4].Cells[1].Value = rippleStop;
        }