Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Detecte una señal distorsionada en ruido

La presencia de ruido a menudo dificulta la determinación del contenido espectral de una señal. El análisis de frecuencia puede ayudar en estos casos.

Considere, por ejemplo, la salida simulada de un amplificador no lineal que introduce la distorsión de tercer orden.

La señal de entrada es una sinusoide de amplitud de unidad de 180 Hz muestreada a 3,6 kHz. Genere 10000 muestras.

N = 1e4; n = 0:N-1; fs = 3600; f0 = 180; t = n/fs; y = sin(2*pi*f0*t);

Añada ruido blanco de varianzas de unidad a la entrada. Modele el amplificador utilizando un polinomio de tercer orden. Pase la señal de entrada a través del amplificador utilizando.polyval Trace una sección de la salida. Para la comparación, trace la salida de una sinusoide pura.

rng default noise = randn(size(y));  dispol = [0.5 0.75 1 0]; out = polyval(dispol,y+noise);  ns = 300:500;   plot(t(ns),[out(ns);polyval(dispol,y(ns))]) xlabel('Time (s)') ylabel('Signals') axis tight legend('With white noise','No white noise')

Se utiliza para calcular y trazar la densidad espectral de potencia de la salida.pwelch

[pxx,f] = pwelch(out,[],[],[],fs);  pwelch(out,[],[],[],fs)

Debido a que el amplificador presenta distorsión de tercer orden, se espera que la señal de salida tenga:

  • Un componente (frecuencia cero);DC

  • Un componente con la misma frecuencia que la entrada, 180 Hz;fundamental

  • Dos--componentes de frecuencia en dos y tres veces la frecuencia de la entrada, 360 y 540 Hz.harmonics

Compruebe que la salida es la esperada para una no linealidad cúbica.

[pks,lox] = findpeaks(pxx,'NPeaks',4,'SortStr','descend');  hold on plot(f(lox)/1000,10*log10(pks),'or') hold off  legend('PSD','Frequency Components')

 components = sort([f(lox) f0*(0:3)'])'
components = 2×4

    0.8789  180.1758  360.3516  540.5273
         0  180.0000  360.0000  540.0000

funciona dividiendo la señal en segmentos superpuestos, calculando el periodograma de cada segmento y promediando.pwelch De forma predeterminada, la función utiliza ocho segmentos con un 50% de superposición. Para 10000 muestras, esto corresponde a 2222 muestras por segmento.

Dividir la señal en segmentos más cortos da como resultado más promediación. El periodograma es más suave, pero tiene menor resolución. El armónico superior no puede distinguirse.

pwelch(out,222,[],[],fs)

La división de la señal en segmentos más largos aumenta la resolución, pero también la aleatoriedad. La señal y los armónicos son precisamente en los lugares esperados. Sin embargo, hay al menos un pico espurious de alta frecuencia con más potencia que el armónico superior.

pwelch(out,4444,[],[],fs)

Consulte también

|

Temas relacionados