Exemplo n.º 1
0
        public static Senal correlacionar(Senal operando1, Senal operando2)
        {
            SenalPersonalizada resultado = new SenalPersonalizada();

            resultado.TiempoInicial = operando1.TiempoInicial - operando2.TiempoFinal;
            resultado.TiempoFinal   = operando1.TiempoFinal;
            resultado.FrecMuestreo  = operando1.FrecMuestreo;

            double periodoMuestreo           = 1 / resultado.FrecMuestreo;
            double duracionSenal             = resultado.TiempoFinal - resultado.TiempoInicial;
            double cantidadMuestrasResultado = duracionSenal * resultado.FrecMuestreo;

            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;
                    }
                }

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

            return(resultado);
        }
Exemplo n.º 2
0
        public static Senal sumar(Senal suma1, Senal suma2)
        {
            //construimos la señal resultado
            SenalPersonalizada resultado = new SenalPersonalizada();

            //sumamos muestra por muestra
            resultado.TiempoInicial = suma1.TiempoInicial;
            resultado.TiempoFinal   = suma1.TiempoFinal;
            resultado.FrecMuestreo  = suma1.FrecMuestreo;
            //recorremos 1 lista de muestras y a la 2 señal accedemos por un indice
            int indice = 0;

            foreach (Muestra muestra in suma1.Muestras)
            {
                Muestra muestraResultado = new Muestra();
                muestraResultado.x = muestra.x;
                muestraResultado.y = muestra.y + suma2.Muestras[indice].y;
                indice++;
                resultado.Muestras.Add(muestraResultado);
            }
            return(resultado);
        }
Exemplo n.º 3
0
        public static Senal transformar(Senal senal)
        {
            SenalPersonalizada transformada = new SenalPersonalizada();

            transformada.TiempoInicial = senal.TiempoInicial;
            transformada.TiempoFinal   = senal.TiempoFinal;
            transformada.FrecMuestreo  = senal.FrecMuestreo;

            for (int k = 0; k < senal.Muestras.Count; k++)
            {
                Complex muestra = 0;

                for (int n = 0; n < senal.Muestras.Count; n++)
                {
                    muestra += senal.Muestras[n].y * Complex.Exp(-2 * Math.PI * Complex.ImaginaryOne * k * n / senal.Muestras.Count);
                }

                transformada.Muestras.Add(new Muestra((double)k / (double)senal.Muestras.Count, muestra.Magnitude));
            }

            return(transformada);
        }