示例#1
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            double tiempoInicial      = double.Parse(txtTiempoInicial.Text);
            double tiempoFinal        = double.Parse(txtTiempoFinal.Text);
            double frecuenciaMuestreo = double.Parse(txtMuestreo.Text);

            Senal senal;

            //Declarar las opciones para senalar en el vombo
            switch (cbTipoSenal.SelectedIndex)
            {
            case 0:
                double amplitud   = double.Parse(((ConfiguracionSenoidal)(stackPanelConfiguracion.Children[0])).txtAmplitud.Text);
                double fase       = double.Parse(((ConfiguracionSenoidal)(stackPanelConfiguracion.Children[0])).txtFase.Text);
                double frecuencia = double.Parse(((ConfiguracionSenoidal)(stackPanelConfiguracion.Children[0])).txtFrecuencia.Text);

                senal = new SenalSenoidal(amplitud, fase, frecuencia);
                break;

            case 1: senal = new Rampa(); break;

            case 2: senal = new Signo(); break;

            case 3: senal = new Parabolica(); break;

            case 4:
                double alfa = double.Parse(((ConfiguracionExponencial)(stackPanelConfiguracion.Children[0])).txtAlfa.Text);

                senal = new SenalExponencial(alfa);
                break;

            default:
                senal = null;
                break;
            }

            senal.TiempoInicial      = tiempoInicial;
            senal.TiempoFinal        = tiempoFinal;
            senal.FrecuenciaMuestreo = frecuenciaMuestreo;

            senal.construirSenalDigital();

            //Escalar
            double factorEscala = double.Parse(txtFactorEscalaAmplitud.Text);

            senal.escalar(factorEscala);

            //Desplazamiento Y
            double factorDesplazamientoY = double.Parse(txtDesplazamientoY.Text);

            senal.desplazamientoY(factorDesplazamientoY);

            //Truncar
            double Umbral = double.Parse(txtTruncar.Text);

            senal.Truncar(Umbral);

            senal.actualizarAmplitudMaxima();

            plnGrafica.Points.Clear();


            if (senal != null)
            {
                //Recorrer una coleccion o arreglo
                foreach (Muestra muestra in senal.Muestras)
                {
                    plnGrafica.Points.Add(new Point((muestra.X - tiempoInicial) * scrContenedor.Width, (muestra.Y / senal.AmplitudMaxima * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2)));
                }

                lblAmplitudMaxY.Text = senal.AmplitudMaxima.ToString();
                lblAmplitudNegY.Text = "-" + senal.AmplitudMaxima.ToString();
            }



            plnEjeX.Points.Clear();
            //Punto del principio
            plnEjeX.Points.Add(new Point(0, (scrContenedor.Height / 2)));
            //Punto del final
            plnEjeX.Points.Add(new Point(tiempoFinal + scrContenedor.Width, scrContenedor.Height / 2));

            plnEjeY.Points.Clear();
            //Punto del principio
            plnEjeY.Points.Add(new Point((0 - tiempoInicial) * scrContenedor.Width, (senal.AmplitudMaxima * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2)));
            //Punto del final
            plnEjeY.Points.Add(new Point((0 - tiempoInicial) * scrContenedor.Width, (-senal.AmplitudMaxima * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2)));
        }
示例#2
0
        private void btnGraficar_Click(object sender, RoutedEventArgs e)
        {
            double tiempoInicial = double.Parse(txtTiempoInicial.Text);
            double tiempoFinal   = double.Parse(txtTiempoFinal.Text);
            double frecMuestreo  = double.Parse(txtFrecuenciaMuestreo.Text);

            Señal señal;

            Señal segundaSeñal;

            switch (cbTipoSeñal.SelectedIndex)
            {
            case 0:
                double amplitud   = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion.Children[0])).txtAmplitud.Text);
                double fase       = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion.Children[0])).txtFase.Text);
                double frecuencia = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion.Children[0])).txtFrecuencia.Text);

                señal = new SenalSenoidal(amplitud, fase, frecuencia);
                break;

            case 1:
                señal = new SenalRampa();
                break;

            case 2:
                double alpha = double.Parse(((ConfiguracionExponencial)(panelConfiguracion.Children[0])).txtAlpha.Text);

                señal = new SenalExponencial(alpha);
                break;

            default:
                señal = null;
                break;
            }

            switch (cbTipoSeñal_SegundaSeñal.SelectedIndex)
            {
            case 0:
                double amplitud   = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion_SegundaSeñal.Children[0])).txtAmplitud.Text);
                double fase       = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion_SegundaSeñal.Children[0])).txtFase.Text);
                double frecuencia = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion_SegundaSeñal.Children[0])).txtFrecuencia.Text);

                segundaSeñal = new SenalSenoidal(amplitud, fase, frecuencia);
                break;

            case 1:
                segundaSeñal = new SenalRampa();
                break;

            case 2:
                double alpha = double.Parse(((ConfiguracionExponencial)(panelConfiguracion_SegundaSeñal.Children[0])).txtAlpha.Text);

                segundaSeñal = new SenalExponencial(alpha);
                break;

            default:
                segundaSeñal = null;
                break;
            }

            señal.TiempoInicial      = tiempoInicial;
            señal.TiempoFinal        = tiempoFinal;
            señal.FrecuenciaMuestreo = frecMuestreo;

            //Segunda Señal
            segundaSeñal.TiempoInicial      = tiempoInicial;
            segundaSeñal.TiempoFinal        = tiempoFinal;
            segundaSeñal.FrecuenciaMuestreo = frecMuestreo;

            señal.construirSenalDigital();

            //Escalar
            double factorEscala = double.Parse(txtFactorEscalaAmplitud.Text);

            señal.escalar(factorEscala);

            señal.actualizarAmplitudMaxima();

            plnGrafica.Points.Clear();
            if ((bool)cbEscalar.IsChecked)
            {
                señal.escalar(float.Parse(txtFactorEcalar.Text)) else
                if ((bool)cbDesplazar)
                {
                    if (señal != null)
                    {
                        //Recorrer una colección o arreglo.
                        foreach (Muestra muestra in señal.Muestra)
                        {
                            plnGrafica.Points.Add(new Point((muestra.X - tiempoInicial) * scrContenedor.Width,
                                                            (muestra.Y / señal.AmplitudMaxima) * ((scrContenedor.Height / 2.0) - 30) * -1 + (scrContenedor.Height / 2)));
                        }

                        lblAmplitudMaximaY.Text          = señal.AmplitudMaxima.ToString("F");
                        lblAmplitudMaximaY_Negativa.Text = "-" + señal.AmplitudMaxima.ToString("F");
                    }
                }
            }
示例#3
0
        private void btnGraficar_Click(object sender, RoutedEventArgs e)
        {
            double tiempoInicial = double.Parse(txtTiempoInicial.Text);
            double tiempoFinal   = double.Parse(txtTiempoFinal.Text);
            double frecMuestreo  = double.Parse(txtFrecMuestreo.Text);

            Senal senal;

            switch (cbTipoSenal.SelectedIndex)
            {
            case 0:
                double amplitud   = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion.Children[0])).txtAmplitud.Text);
                double fase       = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion.Children[0])).txtFase.Text);
                double frecuencia = double.Parse(((ConfiguracionSenoidal)(panelConfiguracion.Children[0])).txtFrecuencia.Text);

                senal = new SenalSenoidal(amplitud, fase, frecuencia);
                break;

            case 1: senal = new SenalRampa();
                break;

            case 2:
                double alfa = double.Parse(((ConfiguracionExponencial)(panelConfiguracion.Children[0])).txtAlfa.Text);

                senal = new SenalExponencial(alfa);
                break;

            default: senal = null;
                break;
            }

            senal.TiempoInicial = tiempoInicial;
            senal.TiempoFinal   = tiempoFinal;
            senal.FrecMuestreo  = frecMuestreo;

            //Construye señal
            senal.construirSenalDigital();

            //Escalar
            double factorEscala = double.Parse(txtFactorEscalaAmplitud.Text);

            senal.escalar(factorEscala);
            //Desplazar
            double factorDesplazar = double.Parse(txtFactorDesplazamiento.Text);

            senal.desplazar(factorDesplazar);
            senal.actualizarAmplitudMaxima();
            //Truncar
            double factorTruncar = double.Parse(txtUmbral.Text);

            senal.truncar(factorTruncar);
            //Potencia
            double factorPotencia = double.Parse(txtPotencia.Text);

            senal.potencia(factorPotencia);

            //Limpia la gráfica
            plnGrafica.Points.Clear();

            if (senal != null)
            {
                //Recorrer una colección o arreglo.
                foreach (Muestra muestra in senal.Muestras)
                {
                    plnGrafica.Points.Add(new Point((muestra.x - tiempoInicial) * scrContenedor.Width,
                                                    (muestra.y / senal.amplitudMaxima) * ((scrContenedor.Height / 2.0) - 30) * -1 + (scrContenedor.Height / 2)));
                }

                lblAmplitudMaximaY.Text          = senal.amplitudMaxima.ToString();
                lblAmplitudMaximaY_Negativa.Text = "-" + senal.amplitudMaxima.ToString();
            }

            //Graficando el eje de X
            plnEjeX.Points.Clear();
            //Punto de inicio.
            plnEjeX.Points.Add(new Point(0, (scrContenedor.Height / 2)));
            //Punto de fin.
            plnEjeX.Points.Add(new Point((tiempoFinal - tiempoInicial) * scrContenedor.Width, (scrContenedor.Height / 2)));

            //Graficando el eje de Y
            plnEjeY.Points.Clear();
            //Punto de inicio.
            plnEjeY.Points.Add(new Point(0 - tiempoInicial * scrContenedor.Width, scrContenedor.Height));
            //Punto de fin.
            plnEjeY.Points.Add(new Point(0 - tiempoInicial * scrContenedor.Width, scrContenedor.Height * -1));
        }