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.

Detectar una señal distorsionada en el ruido

La presencia de ruido a menudo dificulta determinar el 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 un sinusoides de amplitud unitaria de 180 Hz muestreado a 3,6 kHz. Generar 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 varianza unitaria 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 Trazar una sección de la salida. Para la comparación trazar la salida de un sinusoides puro.

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 introduce la distorsión de tercer orden, se espera que la señal de salida tenga:

  • A (frecuencia cero) componente;DC

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

  • Dos -- componentes de frecuencia a dos y tres veces la frecuencia de la entrada, 360 y 540 Hz.Armónicos

Verifique que la salida sea 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 una superposición del 50%. Para 10000 muestras, esto corresponde a 2222 muestras por segmento.

Dividir la señal en segmentos más cortos da como resultado un promedio de más. El periodo de periodo es más suave, pero tiene menor resolución. El armónico más alto no se puede distinguir.

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

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

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

Consulte también

|

Temas relacionados