コード例 #1
0
        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;
        }
コード例 #2
0
        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);
        }