Esempio n. 1
0
        public static Señal suma(Señal sumando1, Señal sumando2)
        {
            SeñalPersonalizada resultado = new SeñalPersonalizada();

            resultado.TiempoInicial      = sumando1.TiempoInicial;
            resultado.TiempoFinal        = sumando1.TiempoFinal;
            resultado.FrecuenciaMuestreo = sumando1.FrecuenciaMuestreo;

            int indice = 0;

            foreach (Muestra muestra in sumando1.Muestras)
            {
                Muestra muestraResultado = new Muestra();
                muestraResultado.X = muestra.X;
                muestraResultado.Y = muestra.Y + sumando2.Muestras[indice].Y;

                indice++;
                resultado.Muestras.Add(muestraResultado);
            }

            return(resultado);
        }
Esempio n. 2
0
        public static Señal multiplicacion(Señal multiplicando1, Señal multiplicando2)
        {
            SeñalPersonalizada resultado = new SeñalPersonalizada();

            // Multiplicandos de la Señal 1
            resultado.TiempoInicial      = multiplicando1.TiempoInicial;
            resultado.TiempoFinal        = multiplicando1.TiempoFinal;
            resultado.FrecuenciaMuestreo = multiplicando1.FrecuenciaMuestreo;

            int indice = 0;

            foreach (Muestra muestra in multiplicando1.Muestras)
            {
                Muestra muestraResultado = new Muestra();
                muestraResultado.X = muestra.X;
                muestraResultado.Y = muestra.Y * multiplicando2.Muestras[indice].Y;
                indice++;
                resultado.Muestras.Add(muestraResultado);
            }

            return(resultado);
        }
Esempio n. 3
0
        public static Señal convolucionar(Señal operando1, Señal operando2)
        {
            SeñalPersonalizada resultado = new SeñalPersonalizada();

            //asi se deteminan los limites de una convolucion, es la suma de los limites interiores y la suma de los limites superiores
            resultado.TiempoInicial = operando1.TiempoInicial + operando2.TiempoInicial;
            resultado.TiempoFinal   = operando1.TiempoFinal + operando2.TiempoFinal;

            resultado.FrecuenciaMuestreo = operando1.FrecuenciaMuestreo;

            double periodoMuestreo = 1 / resultado.FrecuenciaMuestreo;

            double duracionSeñal = resultado.TiempoFinal - resultado.TiempoInicial;

            double cantidadMuestrasResultado = duracionSeñal * resultado.FrecuenciaMuestreo;

            double instanteActual = resultado.TiempoInicial;

            for (int n = 0; n < cantidadMuestrasResultado; n++)
            {
                double valorMuestraY = 0;
                for (int k = 0; k < operando2.Muestras.Count; k++)
                {
                    // el .count es una propiedad que permite contar el numero de valores que tiene una lista
                    if ((n - k) >= 0 && (n - k) < operando2.Muestras.Count)
                    {
                        valorMuestraY += operando1.Muestras[k].Y * operando2.Muestras[n - k].Y;
                    }
                }

                valorMuestraY /= resultado.FrecuenciaMuestreo;

                Muestra muestra = new Muestra(instanteActual, valorMuestraY);
                resultado.Muestras.Add(muestra);
                instanteActual += periodoMuestreo;
            }

            return(resultado);
        }
        public static Señal convulcionar(Señal operando1, Señal operando2)
        {
            SeñalPersonalizada resultado = new SeñalPersonalizada();

            resultado.TiempoInicial = operando1.TiempoInicial + operando2.TiempoInicial;

            resultado.TiempoFinal = operando1.TiempoFinal + operando2.TiempoFinal;

            resultado.FrecuenciaMuestreo = operando1.FrecuenciaMuestreo;

            double periodoMuestreo = 1 / resultado.FrecuenciaMuestreo;

            double duracionSeñal = resultado.TiempoFinal - resultado.TiempoInicial;

            double cantidadMuestrasResultado = duracionSeñal * resultado.FrecuenciaMuestreo;

            double InstanteActual = resultado.TiempoInicial;

            for (int n = 0; n < cantidadMuestrasResultado; n++)
            {
                double ValorMuestra = 0;
                for (int k = 0; k < operando2.Muestras.Count; k++)
                {
                    if ((n - k) >= 0 && (n - k) < operando2.Muestras.Count)
                    {
                        ValorMuestra +=
                            operando1.Muestras[k].Y * operando2.Muestras[n - k].Y;
                    }
                }
                Muestra muestra = new Muestra(InstanteActual, ValorMuestra);
                resultado.Muestras.Add(muestra);
                InstanteActual += periodoMuestreo;
            }



            return(resultado);
        }
        private void BtnGraficar_Click(object sender, RoutedEventArgs e)
        {
            double amplitud =
                double.Parse(txtAmplitud.Text);
            double fase =
                double.Parse(txtFase.Text);
            double frecuencia =
                double.Parse(txtFrecuencia.Text);
            double tiempoInicial =
                double.Parse(txtTiempoInicial.Text);
            double tiempoFinal =
                double.Parse(txtTiempoFinal.Text);
            double frecuenciaMuestreo =
                double.Parse(txtFrecuenciaMuestreo.Text);

            /*SeñalSenoidal señal =
             *  new SeñalSenoidal(amplitud,
             *  fase, frecuencia);*/
            /*SeñalParabolica señal =
             *  new SeñalParabolica();*/

            SeñalRampa señal =
                new SeñalRampa();

            double periodoMuestreo =
                1.0 / frecuenciaMuestreo;

            double amplitudMaxima = 0.0;

            plnGrafica.Points.Clear();

            for (double i = tiempoInicial;
                 i <= tiempoFinal;
                 i += periodoMuestreo)
            {
                double valorMuestra = señal.evaluar(i);
                if (Math.Abs(valorMuestra) > amplitudMaxima)
                {
                    amplitudMaxima = Math.Abs(valorMuestra);
                }
                Muestra muestra =
                    new Muestra(i, valorMuestra);
                señal.Muestras.Add(muestra);
            }

            foreach (Muestra muestra in señal.Muestras)
            {
                plnGrafica.Points.Add(
                    adaptarCoordenadas(muestra.X,
                                       muestra.Y, tiempoInicial, amplitudMaxima)
                    );
            }


            lblLimiteSuperior.Text =
                amplitudMaxima.ToString();
            lblLimiteInferior.Text =
                "-" + amplitudMaxima.ToString();

            plnEjeX.Points.Clear();
            plnEjeX.Points.Add(
                adaptarCoordenadas(tiempoInicial, 0.0,
                                   tiempoInicial, amplitudMaxima)
                );
            plnEjeX.Points.Add(
                adaptarCoordenadas(tiempoFinal, 0.0, tiempoInicial,
                                   amplitudMaxima)
                );

            plnEjeY.Points.Clear();
            plnEjeY.Points.Add(
                adaptarCoordenadas(0.0, amplitudMaxima,
                                   tiempoInicial, amplitudMaxima));
            plnEjeY.Points.Add(
                adaptarCoordenadas(0.0, -amplitudMaxima,
                                   tiempoInicial, amplitudMaxima));
        }