Пример #1
0
        /*-------------------------------------*/
        private void btnGraficasRampa_click(object sender, RoutedEventArgs e)
        {
            double tiempoInicial      = double.Parse(txtTiempoInicial.Text); //TODAS LAS SENALES OCUPAN ESTAS 3 VARIABLES
            double tiempoFinal        = double.Parse(txtTiempoFinal.Text);
            double frecuenciaMuestreo = double.Parse(txtMuestreo.Text);

            Rampa senalRampa = new Rampa();


            double periodoMuestreo = 1 / frecuenciaMuestreo;

            plnGrafica.Points.Clear();


            for (double i = tiempoInicial; i <= tiempoFinal; i += periodoMuestreo)
            {
                double valorMuestral = senalRampa.evaluar(i);

                if (Math.Abs(valorMuestral) > senalRampa.AmplitudMaxima)
                {
                    senalRampa.AmplitudMaxima = Math.Abs(valorMuestral);
                }

                senalRampa.Muestras.Add(new Muestra(i, valorMuestral));
            }

            //Recorrer una coleccion o arreglo
            foreach (Muestra muestra in senalRampa.Muestras)
            {
                plnGrafica.Points.Add(new Point(muestra.X * scrContenedor.Width, (muestra.Y * ((scrContenedor.Height / 2.0) - 30) * -1) + (scrContenedor.Height / 2)));
            }
        }
Пример #2
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)));
        }