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.

Medición del poder de las señales periódicas deterministas

Este ejemplo muestra cómo medir el poder de las señales periódicas deterministas. Aunque continuas en el tiempo, las señales deterministas periódicas producen espectros de potencia discretos.

Proporcionamos dos ejemplos de cómo medir la potencia media de una señal. Los ejemplos utilizan ondas sinusoidales y asumen una impedancia de carga de 1 ohmio.

Clasificación de señales

En general, las señales se pueden clasificar en tres grandes categorías, señales de potencia, señales de energía, o ninguna. Las señales deterministas que se componen de sinusoides es un ejemplo de señales de potencia que tienen energía infinita pero potencia media finita. Las señales aleatorias también tienen una potencia media finita y entran en la categoría de señales de potencia. Una señal transitoria es un ejemplo de señales de energía que comienzan y terminan con amplitud cero. Todavía hay otras señales que no se pueden caracterizar como señales de potencia o energía.

Poder teórico de un solo sinusoides

En nuestro primer ejemplo estimamos la potencia media de una señal sinusoidal con una amplitud máxima de 1 voltio y un componente de frecuencia a 128 Hz.

Fs = 1024; t = 0:1/Fs:1-(1/Fs); A = 1; F1 = 128; x = A*sin(2*pi*t*F1);

Veamos una parte de la señal en el dominio del tiempo.

idx = 1:128; plot(t(idx),x(idx)) ylabel('Amplitude') xlabel('Time (seconds)') axis tight grid

El poder promedio teórico (media-cuadrado) de cada sinusoides complejo es

<math display="inline">
<mrow>
<mrow>
<mrow>
<msup>
<mrow>
<mi mathvariant="italic">A</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
<mo>/</mo>
<mrow>
<mn>4</mn>
</mrow>
</mrow>
</mrow>
</math>
, que en nuestro ejemplo es 0,25 o –6,02 dB. Por lo tanto, la contabilidad de la potencia en las frecuencias positivas y negativas resulta en una potencia media de
<math display="inline">
<mrow>
<mn>2</mn>
<mo>×</mo>
<mrow>
<mrow>
<msup>
<mrow>
<mi mathvariant="italic">A</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
<mo>/</mo>
<mrow>
<mn>4</mn>
</mrow>
</mrow>
</mrow>
</math>
.

power_theoretical = (A^2/4)*2
power_theoretical = 0.5000 

También podemos calcular en dB la potencia contenida en las frecuencias positivas:

pow2db(power_theoretical/2)
ans = -6.0206 

Medición del poder de un solo sinusoides

Para medir la potencia media de la señal llamamos y especificamos la opción.periodogram'power'

periodogram(x,hamming(length(x)),[],Fs,'centered','power') ylim([-10 -5.5])

Como podemos ver en la parte ampliada de la trama, cada sinusoides complejo tiene una potencia promedio de aproximadamente –6 dB.

Estimación del poder de un solo sinusoides a través de PSD

Otra forma de calcular la potencia media de una señal es "integrando" el área bajo la curva PSD.

periodogram(x,hamming(length(x)),[],Fs,'centered','psd')

Una cosa a tener en cuenta en esta trama es que los picos de la gráfica de espectro no tienen la misma altura que cuando trazamos el espectro de potencia. La razón es porque al tomar mediciones de Densidad Espectral de Potencia (PSD) es el área bajo la curva (que es la medida de la potencia promedio) lo que importa. Podemos verificar que llamando a la función, que utiliza la aproximación del rectángulo para integrarbajo la curva para calcular la potencia media.bandpower

[Pxx_hamming,F] = periodogram(x,hamming(length(x)),[],Fs,'psd'); power_freqdomain = bandpower(Pxx_hamming,F,'psd')
power_freqdomain = 0.5000 

Dado que de acuerdo con el teorema de Parseval, la potencia media total en un sinusoides debe ser igual, ya sea que se calcule en el dominio de tiempo o en el dominio de frecuencia, podemos verificar la potencia media total estimada de nuestra señal sumando la señal en el dominio de tiempo.

power_timedomain = sum(abs(x).^2)/length(x)
power_timedomain = 0.5000 

Poder teórico de los sinusoidos múltiples

Para el segundo ejemplo estimamos la potencia media total de una señal que contiene energía en múltiples componentes de frecuencia: uno en CC, uno a 100 Hz y otro a 200 Hz.

Fs = 1024; t  = 0:1/Fs:1-(1/Fs); Ao = 1.5; A1 = 4; A2 = 3; F1 = 100; F2 = 200; x  = Ao + A1*sin(2*pi*t*F1) + A2*sin(2*pi*t*F2);

Veamos una parte de la señal.

idx = 1:128; plot(t(idx),x(idx)) grid ylabel('Amplitude') xlabel('Time (seconds)')

Al igual que en el ejemplo anterior, el poder promedio teórico de cada sinusoides complejo es

<math display="inline">
<mrow>
<mrow>
<mrow>
<msup>
<mrow>
<mi mathvariant="italic">A</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
<mo>/</mo>
<mrow>
<mn>4</mn>
</mrow>
</mrow>
</mrow>
</math>
. La potencia media de CC de la señal es igual a su potencia máxima, ya que es constante y, por lo tanto,
<math display="inline">
<mrow>
<msubsup>
<mrow>
<mi mathvariant="italic">A</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
</mrow>
</math>
. La contabilidad de la potencia en las frecuencias positivas y negativas da como resultado la potencia media total de una señal (suma de la potencia media de cada componente armónico) de
<math display="inline">
<mrow>
<msubsup>
<mrow>
<mi mathvariant="italic">A</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
<mo>+</mo>
<mn>2</mn>
<mo>×</mo>
<mrow>
<mrow>
<msubsup>
<mrow>
<mi mathvariant="italic">A</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
</mrow>
<mo>/</mo>
<mrow>
<mn>4</mn>
</mrow>
</mrow>
<mo>+</mo>
<mn>2</mn>
<mo>×</mo>
<mrow>
<mrow>
<msubsup>
<mrow>
<mi mathvariant="italic">A</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
</mrow>
<mo>/</mo>
<mrow>
<mn>4</mn>
</mrow>
</mrow>
</mrow>
</math>
.

power_theoretical = Ao^2 + (A1^2/4)*2 + (A2^2/4)*2
power_theoretical = 14.7500 

Al calcular la potencia media de cada componente de frecuencia único en dB vemos que los resultados teóricos coinciden con la gráfica de espectro cuadrado medio a continuación.

pow2db([Ao^2 A1^2/4 A2^2/4])
ans = 1×3

    3.5218    6.0206    3.5218

Medición del poder de los sinusoides múltiples

Para medir la potencia media de la señal, una vez más utilizamos la función para calcular y trazar el espectro de potencia de la señal.periodogram

periodogram(x,hamming(length(x)),[],Fs,'centered','power') ylim([0 7])

Estimación del poder de los sinusoides múltiples a través de PSD

Como en el primer ejemplo, podemos estimar la potencia media total de la señal "integrando" bajo la curva PSD.

periodogram(x,hamming(length(x)),[],Fs,'centered','psd')

Una vez más, la altura de los picos de la gráfica de densidad espectral en un componente de frecuencia específico puede no coincidir con las de la gráfica del espectro de potencia por las razones señaladas en el primer ejemplo.

[Pxx, F] = periodogram(x, hamming(length(x)),[],Fs,'centered','psd'); power_freqdomain = bandpower(Pxx,F,'psd')
power_freqdomain = 14.7500 

Una vez más, podemos verificar la potencia media estimada de la señal invocando el teorema de Parseval y sumando la señal en el dominio del tiempo.

power_timedomain = sum(abs(x).^2)/length(x)
power_timedomain = 14.7500 

Relación entre el espectro de potencia, la densidad espectral de potencia y el ENBW

Es posible que haya notado que mientras que la altura de los picos de las gráficas de densidad espectral de potencia y potencia son diferentes, difieren por una proporción constante.

Pxx = periodogram(x,hamming(length(x)),[],Fs,'centered','psd'); Sxx = periodogram(x,hamming(length(x)),[],Fs,'centered','power');  plot(F,Sxx./Pxx) grid axis tight xlabel('Frequency (Hz)') title('Ratio of Power Spectrum to Power Spectral Density')

ratio = mean(Sxx./Pxx)
ratio = 1.3638 

Esta relación se relaciona con el ancho de banda de ruido equivalente de dos lados (ENBW) de la ventana. Puede calcular esta relación directamente llamando a ENBW con la ventana y su frecuencia de muestreo correspondiente.

bw = enbw(hamming(length(x)),Fs)
bw = 1.3638 

Mediciones de potencia mejoradas con periodograma reasignado

En las secciones anteriores, la potencia se midió a partir de uno o varios sinusoides con una frecuencia que coincidía con un contenedor. Las estimaciones de potencia máxima suelen ser menos precisas cuando la frecuencia de la señal está fuera de la bandeja. Para ver este efecto, cree un sinusoides con un número no entero de ciclos durante un período de un segundo.

Fs = 1024; t = 0:1/Fs:1-(1/Fs); A = 1; F = 20.4; x = A*sin(2*pi*F*t); nfft = length(x); power_theoretical = pow2db(A^2/4*2);

Cree una ventana Hamming y una ventana superior plana.

w1 = hamming(length(x)); w2 = flattopwin(length(x));

Calcular el periodograma de usar la ventana Hamming.x Acérquese al pico.

h1 = figure; stem(F,power_theoretical,'BaseValue',-50);  [Pxx1,f1] = periodogram(x,w1,nfft,Fs,'power');  hold on plot(f1,pow2db(Pxx1),'+-')  axis([0 40 -45 0]) legend('Theoretical','Periodogram') xlabel('Frequency (Hz)') ylabel('Power (dB)') title('Periodogram Power Spectrum Estimate') grid

La estimación de potencia máxima está por debajo del pico teórico, y la frecuencia de la estimación máxima difiere de la frecuencia real.

[Pmax,imax] = max(Pxx1); dPmax_w1 = pow2db(Pmax) - power_theoretical
dPmax_w1 = -1.1046 
dFreq = f1(imax) - F
dFreq = -0.4000 

Reducir el error de amplitud con zero-Padding

Para ver por qué está sucediendo esto, calcule el periodograma utilizando un mayor número de bins FFT.

[Pxx2,f2] = periodogram(x,w1,100*nfft,Fs,'power');  figure stem(F,power_theoretical,'BaseValue',-50)  hold on plot(f1,pow2db(Pxx1),'+') plot(f2,pow2db(Pxx2)) hold off  axis([0 40 -40 0]) legend('Theoretical Peak','nfft = 1024','nfft = 102400') xlabel('Frequency (Hz)') ylabel('Power (dB)') title('Periodogram Power Spectrum Estimate') grid

En el periodograma original, el pico espectral se encuentra entre dos contenedores, y por esa razón el pico estimado está por debajo del pico teórico. Aumentar el número de contenedores FFT da una mejor imagen del espectro, aunque esta puede ser una manera computacionalmente costosa de mejorar las mediciones de picos.

Reducir el error de amplitud con una ventana superior plana

Otra forma de producir una mejor estimación para la amplitud máxima es utilizar una ventana diferente. Calcular el periodograma de utilizar la ventana superior plana.x

[Pxx,F1] = periodogram(x,w2,nfft,Fs,'power');  figure(h1) plot(F1,pow2db(Pxx)) legend('Theoretical','Hamming','Flat Top') hold off

La ventana superior plana es amplia y plana. Produce una estimación de pico más cercana al valor teórico cuando no contiene un número entero de ciclos, y por lo tanto el pico espectral no cae exactamente en una bandeja.x

dPmax_w2 = pow2db(max(Pxx)) - power_theoretical
dPmax_w2 = -6.2007e-04 

El pico más amplio que produce la ventana superior plana podría ser una desventaja al tratar de resolver picos estrechamente espaciados, y la frecuencia del pico medido es de nuevo diferente de la frecuencia del pico teórico.

Reducir el error de amplitud con periodograma reasignado

Ahora agregue la marca a .'reassigned'periodogram La reasignación de periodogramas utiliza información de fase, que normalmente se descarta, para reasignar la señal a su centro de energía. El procedimiento puede dar lugar a estimaciones espectrales más nítidas. Trazar el periodograma reasignado y acercar el pico.x Utilice la ventana Hamming y la ventana superior plana.

[RPxx1,~,~,Fc1] = periodogram(x,w1,nfft,Fs,'power','reassigned'); [RPxx2,~,~,Fc2] = periodogram(x,w2,nfft,Fs,'power','reassigned');  stem(F,power_theoretical,'*','BaseValue',-40) hold on stem(Fc1,pow2db(RPxx1),'BaseValue',-50) stem(Fc2,pow2db(RPxx2),'BaseValue',-50) hold off  legend('Theoretical','Hamming Reassignment','Flattop Reassignment') xlabel('Frequency (Hz)') ylabel('Power (dB)') title('Periodogram Power Spectrum Estimate') axis([19.5 21 -4 -2]) grid

Las estimaciones reasignadas de potencia están más cerca del valor teórico para ambas ventanas, con la ventana superior plana produciendo la mejor medición de pico.

[RPxx1max,imax1] = max(RPxx1); [RPxx2max,imax2] = max(RPxx2); dPmax_reassign_w1 = pow2db(RPxx1max) - power_theoretical
dPmax_reassign_w1 = -0.0845 
dPmax_reassign_w2 = pow2db(RPxx2max) - power_theoretical
dPmax_reassign_w2 = -1.1131e-05 

Las estimaciones de frecuencia también se mejoran utilizando el periodograma reasignado, con la ventana superior plana de nuevo dando los mejores resultados.

Fc1(imax1)-F
ans = -0.0512 
Fc2(imax2)-F
ans = 5.6552e-04