private void graficar(Señal señal, Polyline grafica, double amplitudMayor) { double escalaY = scrGraficas.Height / 2.25; double escalaX = scrGraficas.Width / (señal.TiempoFinal - señal.TiempoInicial); PointCollection puntosGrafica = new PointCollection(); foreach (Point punto in señal.señalDigitalizada) { puntosGrafica.Add(new Point( (punto.X - señal.TiempoInicial) * escalaX, ((punto.Y * -escalaY) / amplitudMayor) + escalaY )); } grafica.Points = puntosGrafica; }
private void btnGraficar_Click(object sender, RoutedEventArgs e) { primeraSeñal = new SeñalPersonalizada(); primeraSeñal.TiempoInicial = 0; primeraSeñal.señalDigitalizada = new List <Point>(); var file = ((ConfiguracionAudio)panelSeñal1.Children[0]).txtRuta.Text; using (var reader = new AudioFileReader(file)) { var samplesPerSecond = reader.WaveFormat.SampleRate; double intervaloX = 1.0 / (double)reader.WaveFormat.SampleRate; primeraSeñal.IntervaloMuestreo = intervaloX; double xActual = 0; var readBuffer = new float[reader.WaveFormat.Channels]; int samplesRead = 1; primeraSeñal.TiempoFinal = reader.TotalTime.TotalSeconds; txtIntervaloMuestreo.Text = reader.WaveFormat.SampleRate.ToString(); txtTiempoInicial.Text = primeraSeñal.TiempoInicial.ToString(); txtTiempoFInal.Text = primeraSeñal.TiempoFinal.ToString(); do { samplesRead = reader.Read(readBuffer, 0, reader.WaveFormat.Channels); if (samplesRead > 0) { double max = readBuffer.Take(samplesRead).Max(); primeraSeñal.señalDigitalizada.Add(new Point(xActual, max)); xActual += intervaloX; } } while (samplesRead > 0); } double amplitudMaxima = obtenerAmplitudMaxima(primeraSeñal.señalDigitalizada); graficar(primeraSeñal, plnSeñal1, amplitudMaxima); graficarEjes(primeraSeñal.TiempoInicial, primeraSeñal.TiempoFinal, amplitudMaxima, plnOrigenX1, plnOrigenY1, grdEtiquetasEjes1, 1); terceraSeñal = new SeñalPersonalizada(); terceraSeñal.IntervaloMuestreo = primeraSeñal.IntervaloMuestreo; terceraSeñal.señalDigitalizada = primeraSeñal.transformadaFourier(); terceraSeñal.TiempoInicial = terceraSeñal.señalDigitalizada[0].X; terceraSeñal.TiempoFinal = terceraSeñal.señalDigitalizada[terceraSeñal.señalDigitalizada.Count - 1].X; double freqFundamental = obtenerFrecuenciaFundamental(terceraSeñal.señalDigitalizada); lblFreq.Content = freqFundamental.ToString(); if (obtenerAmplitudMaxima(terceraSeñal.señalDigitalizada) > amplitudMaxima) { amplitudMaxima = obtenerAmplitudMaxima(terceraSeñal.señalDigitalizada); } graficar(terceraSeñal, plnSeñal3, amplitudMaxima); graficarEjes(terceraSeñal.TiempoInicial, terceraSeñal.TiempoFinal, amplitudMaxima, plnOrigenX2, plnOrigenY2, grdEtiquetasEjes2, 1000); }