public static Señal multiplicarSeñales( Señal señal1, Señal señal2) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señal1.TiempoInicial; resultado.TiempoFinal = señal1.TiempoFinal; resultado.FrecuenciaMuestreo = señal1.FrecuenciaMuestreo; int indice = 0; foreach (var muestra in señal1.Muestras) { double nuevoValor = muestra.Y * señal2.Muestras[indice].Y; resultado.Muestras.Add( new Muestra(muestra.X, nuevoValor)); if (Math.Abs(nuevoValor) > resultado.AmplitudMaxima) { resultado.AmplitudMaxima = Math.Abs(nuevoValor); } indice++; } return(resultado); }
public static Señal transformadaFourier(Señal señal) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señal.TiempoInicial; resultado.TiempoFinal = señal.TiempoFinal; resultado.FrecuenciaMuestreo = señal.FrecuenciaMuestreo; for (int k = 0; k < señal.Muestras.Count; k++) { Complex muestra = 0; // 0 + 0i for (int n = 0; n < señal.Muestras.Count; n++) { muestra += señal.Muestras[n].Y * Complex.Exp(-2 * Math.PI * Complex.ImaginaryOne * k * n / señal.Muestras.Count); } resultado.Muestras.Add(new Muestra(señal.Muestras[k].X, muestra.Magnitude)); if (Math.Abs(muestra.Magnitude) > señal.AmplitudMaxima) { señal.AmplitudMaxima = Math.Abs(muestra.Magnitude); } } return(resultado); }
public static Señal escalaExponencial( Señal señalOrginal, double exponente) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señalOrginal.TiempoInicial; resultado.TiempoFinal = señalOrginal.TiempoFinal; resultado.FrecuenciaMuestreo = señalOrginal.FrecuenciaMuestreo; foreach (var muestra in señalOrginal.Muestras) { double nuevoValor = Math.Pow(muestra.Y, exponente); resultado.Muestras.Add( new Muestra(muestra.X, nuevoValor)); if (Math.Abs(nuevoValor) > resultado.AmplitudMaxima) { resultado.AmplitudMaxima = Math.Abs(nuevoValor); } } return(resultado); }
public static Señal desplazarAmplitud( Señal señalOriginal, double cantidadDesplazamiento) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señalOriginal.TiempoInicial; resultado.TiempoFinal = señalOriginal.TiempoFinal; resultado.FrecuenciaMuestreo = señalOriginal.FrecuenciaMuestreo; foreach (var muestra in señalOriginal.Muestras) { double nuevoValor = muestra.Y + cantidadDesplazamiento; resultado.Muestras.Add( new Muestra( muestra.X, nuevoValor) ); if (Math.Abs(nuevoValor) > resultado.AmplitudMaxima) { resultado.AmplitudMaxima = Math.Abs(nuevoValor); } } return(resultado); }
public static Señal limiteSuperior( Señal señal1, Señal señal2) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señal1.TiempoInicial; resultado.TiempoFinal = señal1.TiempoFinal; resultado.FrecuenciaMuestreo = señal1.FrecuenciaMuestreo; int indice = 0; foreach (var muestra in señal1.Muestras) { if (muestra.Y >= señal2.Muestras[indice].Y) { double nuevoValor = muestra.Y; } else { double nuevoValor = señal2.Muestras[indice].Y; } indice++; } return(resultado); }
public static Señal transformadaFourier(Señal señal) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señal.TiempoInicial; resultado.TiempoFinal = señal.TiempoFinal; resultado.FrecuenciaMuestreo = señal.FrecuenciaMuestreo; //Integral for (int k = 0; k < señal.Muestras.Count; k++) { //Xk Complex muestra = 0; // 0 + 01 for (int n = 0; n < señal.Muestras.Count; n++) { //Sumatoria n= 0 + acumulados muestra += //Xn * (e^-2Pi*i*k*n)/N señal.Muestras[n].Y * Complex.Exp((-2 * Math.PI * Complex.ImaginaryOne * k * n) / señal.Muestras.Count); } //Para graficar num complejos se camia el valor complejo a valor absoluto o magnitud resultado.Muestras.Add(new Muestra(señal.Muestras[k].X, muestra.Magnitude)); //Estoy bien mareada :( </3 if (Math.Abs(muestra.Magnitude) > señal.AmplitudMaxima) { señal.AmplitudMaxima = Math.Abs(muestra.Magnitude); } // ( i * fm)/ N (num de muestras)indice de Fourier a Hz } return(resultado); }
public static Señal limiteSuperior(Señal señal1, Señal señal2) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señal1.TiempoFinal; resultado.TiempoFinal = señal1.TiempoFinal; resultado.FrecuenciaMuestreo = señal1.FrecuenciaMuestreo; int indice = 0; foreach (var muestra in señal1.Muestras) { double nuevoValor = 0; if (muestra.Y >= señal2.Muestras[indice].Y) { nuevoValor = muestra.Y; } else if (muestra.Y < señal2.Muestras[indice].Y) { nuevoValor = señal2.Muestras[indice].Y; } resultado.Muestras.Add(new Muestra(muestra.X, nuevoValor)); /*if (Math.Abs(nuevoValor) > resultado.AmplitudMaxima) * { * resultado.AmplitudMaxima = Math.Abs(nuevoValor); * }*/ //double efedeequis = muestra.Y * señal1.Muestras[indice].Y; //double gedeequis = muestra.Y * señal2.Muestras[indice].Y; //resultado.Muestras.Add(new Muestra(muestra.X, efedeequis)); /*resultado.Muestras.Add(new Muestra(muestra.X, gedeequis)); * * if (efedeequis >= gedeequis) * { * resultado.AmplitudMaxima = efedeequis; * } * * if (efedeequis < gedeequis) * { * resultado.AmplitudMaxima = gedeequis; * }*/ indice++; } return(resultado); }
public static Señal desplazamientoAmplitud(Señal señalOriginal, double factorDesplazamiento) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señalOriginal.TiempoInicial; resultado.TiempoFinal = señalOriginal.TiempoFinal; resultado.FrecuenciaMuestreo = señalOriginal.FrecuenciaMuestreo; foreach (var muestra in señalOriginal.Muestras) { resultado.Muestras.Add(new Muestra(muestra.X, muestra.Y + factorDesplazamiento)); } return(resultado); }
public static Señal limiteInferior( Señal señal1, Señal señal2) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señal1.TiempoInicial; resultado.TiempoFinal = señal1.TiempoFinal; resultado.FrecuenciaMuestreo = señal1.FrecuenciaMuestreo; int indice = 0; foreach (var muestra in señal1.Muestras) { double valor1 = muestra.Y; double valor2 = señal2.Muestras[indice].Y; double nuevoValor = (muestra.Y + señal2.Muestras[indice].Y) / 2.0; if (valor1 < valor2) { nuevoValor = valor1; } else { nuevoValor = valor2; } resultado.Muestras.Add( new Muestra(muestra.X, nuevoValor)); if (Math.Abs(nuevoValor) > resultado.AmplitudMaxima) { resultado.AmplitudMaxima = Math.Abs(nuevoValor); } indice++; } return(resultado); }
public static Señal escalarAmplitud(Señal señalOriginal, double factorEscala) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señalOriginal.TiempoInicial; resultado.TiempoFinal = señalOriginal.TiempoFinal; resultado.FrecuenciaMuestreo = señalOriginal.FrecuenciaMuestreo; foreach (var muestra in señalOriginal.Muestras) { double nuevoValor = muestra.Y * factorEscala; resultado.Muestras.Add(new Muestra(muestra.X, nuevoValor)); if (Math.Abs((nuevoValor)) > resultado.AmplitudMaxima) { resultado.AmplitudMaxima = Math.Abs(nuevoValor); } } return(resultado); }
public static Señal desplazamientoAmplitud(Señal señalDesplazamiento, double cantidadDesplazamiento) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señalDesplazamiento.TiempoInicial; resultado.TiempoFinal = señalDesplazamiento.TiempoFinal; resultado.FrecuenciaMuestreo = señalDesplazamiento.FrecuenciaMuestreo; foreach (var muestra in señalDesplazamiento.Muestras) { double nuevoValor = muestra.Y + cantidadDesplazamiento; resultado.Muestras.Add(new Muestra(muestra.X, nuevoValor)); //El valor se cambia con todos los datos ingresados if (Math.Abs(nuevoValor) > resultado.AmplitudMaxima) { resultado.AmplitudMaxima = Math.Abs(nuevoValor); } } return(resultado); }
public static Señal desplazarAmplitud(Señal señalOriginal, double factorDesplaze) { SeñalResultante resultado = new SeñalResultante(); resultado.TiempoInicial = señalOriginal.TiempoInicial; resultado.TiempoFinal = señalOriginal.TiempoFinal; resultado.FrecuenciaMuestreo = señalOriginal.FrecuenciaMuestreo; foreach (var muestra in señalOriginal.Muestras) { double NuevoValor = muestra.Y + factorDesplaze; resultado.Muestras.Add(new Muestra(muestra.X, NuevoValor)); if (Math.Abs((NuevoValor)) > resultado.AmplitudMaxima) { resultado.AmplitudMaxima = Math.Abs(NuevoValor); } ; } return(resultado); }
public static Señal limiteSuperior(Señal señal1, Señal señal2) { SeñalResultante resultado = new SeñalResultante(); /*SeñalResultante resultado1 = new SeñalResultante(); * SeñalResultante resultado2 = new SeñalResultante();*/ resultado.TiempoInicial = señal1.TiempoInicial; resultado.TiempoFinal = señal1.TiempoFinal; resultado.FrecuenciaMuestreo = señal1.FrecuenciaMuestreo; /*resultado1.TiempoInicial = señal1.TiempoInicial; * resultado1.TiempoFinal = señal1.TiempoFinal; * resultado1.FrecuenciaMuestreo = señal1.FrecuenciaMuestreo; * resultado2.TiempoInicial = señal2.TiempoInicial; * resultado2.TiempoFinal = señal2.TiempoFinal; * resultado2.FrecuenciaMuestreo = señal2.FrecuenciaMuestreo;*/ int indice = 0; foreach (var muestra in señal1.Muestras) { double nuevoValor = muestra.Y; if (muestra.Y >= señal2.Muestras[indice].Y) { resultado.Muestras.Add(new Muestra(muestra.X, nuevoValor)); } else { resultado.Muestras.Add(new Muestra(muestra.X, señal2.Muestras[indice].Y)); } if (Math.Abs(nuevoValor) > resultado.AmplitudMaxima) { resultado.AmplitudMaxima = Math.Abs(nuevoValor); } indice++; } /*foreach (var muestra in señal1.Muestras) * { * resultado1.Muestras.Add(new Muestra(muestra.X, muestra.Y)); * * if (Math.Abs(muestra.Y) > resultado1.AmplitudMaxima) * { * resultado1.AmplitudMaxima = Math.Abs(muestra.Y); * } * } * foreach(var muestra in señal2.Muestras) * { * double nuevoValor = muestra.Y; * resultado2.Muestras.Add(new Muestra(muestra.X, nuevoValor)); * * if (Math.Abs(nuevoValor) > resultado2.AmplitudMaxima) * { * resultado2.AmplitudMaxima = Math.Abs(nuevoValor); * } * } * if(resultado1.AmplitudMaxima >= resultado2.AmplitudMaxima) * return resultado1; * else * return resultado2;*/ return(resultado); }