Contenido principal

pspectrum

Analizar señales en los dominios de frecuencia y de tiempo-frecuencia

Descripción

p = pspectrum(x) devuelve el espectro de potencia de x.

  • Si x es un vector o un horario con un vector de datos, se trata como un solo canal.

  • Si x es una matriz, un horario con una variable matricial o un horario con múltiples variables vectoriales, entonces el espectro se calcula independientemente para cada canal y se almacena en una columna separada de p.

ejemplo

p = pspectrum(x,fs) devuelve el espectro de potencia de una señal vectorial o matricial muestreada a una velocidad fs.

ejemplo

p = pspectrum(x,t) devuelve el espectro de potencia de una señal vectorial o matricial muestreada en los instantes de tiempo especificados en t.

ejemplo

p = pspectrum(___,type) especifica el tipo de análisis del espectro que realiza la función. Especifique type como 'power', 'spectrogram' o 'persistence'. Esta sintaxis puede incluir cualquier combinación de argumentos de entrada de las sintaxis anteriores.

ejemplo

p = pspectrum(___,Name,Value) especifica opciones adicionales con argumentos de par nombre-valor. Las opciones incluyen el ancho de banda de la resolución de frecuencia y el porcentaje de solapamiento entre segmentos contiguos.

ejemplo

[p,f] = pspectrum(___) devuelve las frecuencias correspondientes a las estimaciones espectrales contenidas en p.

ejemplo

[p,f,t] = pspectrum(___,'spectrogram') también devuelve un vector de instantes de tiempo correspondientes a los centros de los segmentos con ventana utilizados para calcular las estimaciones del espectro de potencia de tiempo corto.

ejemplo

[p,f,pwr] = pspectrum(___,'persistence') también devuelve un vector de valores de potencia correspondientes a las estimaciones contenidas en un espectro de persistencia.

pspectrum(___) sin argumentos de salida representa la estimación espectral en la ventana de figura actual. En la gráfica, la función convierte p en dB utilizando 10 log10(p).

ejemplo

Ejemplos

contraer todo

Genere 128 muestras de una sinusoide compleja de dos canales.

  • El primer canal tiene una amplitud unitaria y una frecuencia sinusoidal normalizada de π/4 rad/muestra

  • El segundo canal tiene una amplitud de 1/2 y una frecuencia normalizada de π/2 rad/muestra.

Calcule y represente el espectro de potencia de cada señal. Amplíe el rango de frecuencias de 0.15π rad/muestra a 0.6π rad/muestra. pspectrum escala el espectro de manera que, si el contenido de frecuencia de una señal cae exactamente dentro de un bin, su amplitud en ese bin es la potencia media verdadera de la señal. En una exponencial compleja, la potencia media es el cuadrado de la amplitud. Compruébelo calculando la transformada discreta de Fourier de la señal. Para obtener más detalles, consulte Measure Power of Deterministic Periodic Signals.

N = 128;
x = [1 1/sqrt(2)].*exp(1j*pi./[4;2]*(0:N-1)).';

[p,f] = pspectrum(x);

plot(f/pi,p)
hold on
stem(0:2/N:2-1/N,abs(fft(x)/N).^2)
hold off
axis([0.15 0.6 0 1.1])
legend("Channel "+[1;2]+", "+["pspectrum" "fft"])
grid

Figure contains an axes object. The axes object contains 4 objects of type line, stem. These objects represent Channel 1, pspectrum, Channel 2, pspectrum, Channel 1, fft, Channel 2, fft.

Genere una señal sinusoidal muestreada a 1 kHz durante 296 milisegundos e integrada en ruido blanco gaussiano. Especifique una frecuencia sinusoidal de 200 Hz y una varianza de ruido de 0,1². Almacene la señal y su información de tiempo en un horario de MATLAB®.

Fs = 1000;
t = (0:1/Fs:0.296)';
x = cos(2*pi*t*200)+0.1*randn(size(t));
xTable = timetable(seconds(t),x);

Calcule el espectro de potencia de la señal. Exprese el espectro en decibelios y represéntelo.

[pxx,f] = pspectrum(xTable);

plot(f,pow2db(pxx))
grid on
xlabel('Frequency (Hz)')
ylabel('Power Spectrum (dB)')
title('Default Frequency Resolution')

Figure contains an axes object. The axes object with title Default Frequency Resolution, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains an object of type line.

Vuelva a calcular el espectro de potencia de la sinusoide, pero esta vez utilice una resolución de frecuencia más gruesa de 25 Hz. Represente el espectro utilizando la función pspectrum sin argumentos de salida.

pspectrum(xTable,'FrequencyResolution',25)

Figure contains an axes object. The axes object with title Fres = 25 Hz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains an object of type line.

Genere una señal muestreada a 3 kHz durante 1 segundo. La señal es un chirp cuadrático convexo cuya frecuencia aumenta de 300 Hz a 1300 Hz durante la medición. El chirp está integrado en ruido blanco gaussiano.

fs = 3000;
t = 0:1/fs:1-1/fs;

x1 = chirp(t,300,t(end),1300,'quadratic',0,'convex') + ...
    randn(size(t))/100;

Calcule y represente el espectro de potencia bilateral de la señal con una ventana rectangular. En las señales reales, pspectrum representa un espectro unilateral de manera predeterminada. Para representar un espectro bilateral, establezca TwoSided como verdadero.

pspectrum(x1,fs,'Leakage',1,'TwoSided',true)

Figure contains an axes object. The axes object with title Fres = 83.3333 Hz, xlabel Frequency (kHz), ylabel Power Spectrum (dB) contains an object of type line.

Genere una señal de valor complejo con la misma duración y tasa de muestreo. La señal es un chirp con contenido de frecuencia que varía sinusoidalmente y está integrada en ruido blanco. Calcule el espectrograma de la señal y muéstrelo como una gráfica de cascada. En las señales de valor complejo, el espectrograma es bilateral de forma predeterminada.

x2 = exp(2j*pi*100*cos(2*pi*2*t)) + randn(size(t))/100;

[p,f,t] = pspectrum(x2,fs,'spectrogram');

waterfall(f,t,p')
xlabel('Frequency (Hz)')
ylabel('Time (seconds)')
wtf = gca;
wtf.XDir = 'reverse';
view([30 45])

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Time (seconds) contains an object of type patch.

Genere una señal de dos canales muestreada a 100 Hz durante 2 segundos.

  1. El primer canal consta de un tono de 20 Hz y otro de 21 Hz. Ambos tonos tienen amplitud unitaria.

  2. El segundo canal también tiene dos tonos. Un tono tiene amplitud unitaria y una frecuencia de 20 Hz. El otro tono tiene una amplitud de 1/100 y una frecuencia de 30 Hz.

fs = 100;
t = (0:1/fs:2-1/fs)';

x = sin(2*pi*[20 20].*t) + [1 1/100].*sin(2*pi*[21 30].*t);

Inserte la señal en ruido blanco. Especifique una relación señal-ruido de 40 dB. Represente las señales.

x = x + randn(size(x)).*std(x)/db2mag(40);

plot(t,x)

Figure contains an axes object. The axes object contains 2 objects of type line.

Calcule los espectros de los dos canales y muéstrelos.

pspectrum(x,t)

Figure contains an axes object. The axes object with title Fres = 1.2886 Hz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains 2 objects of type line.

El valor predeterminado del manchado espectral, 0,5, corresponde a un ancho de banda de la resolución de aproximadamente 1,29 Hz. Los dos tonos del primer canal no se resuelven. El tono de 30 Hz en el segundo canal es visible, a pesar de ser mucho más débil que el otro.

Aumente el manchado a 0,85, lo que equivale a una resolución de unos 0,74 Hz. El tono débil del segundo canal es claramente visible.

pspectrum(x,t,'Leakage',0.85)

Figure contains an axes object. The axes object with title Fres = 736.8785 mHz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains 2 objects of type line.

Aumente el manchado hasta el valor máximo. El ancho de banda de la resolución es aproximadamente 0,5 Hz. Los dos tonos del primer canal se resuelven. El tono débil del segundo canal queda enmascarado por los grandes lóbulos laterales de la ventana.

pspectrum(x,t,'Leakage',1)

Figure contains an axes object. The axes object with title Fres = 500 mHz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains 2 objects of type line.

Genere una señal que conste de un oscilador controlado por tensión y tres átomos gaussianos. La señal se muestrea a fs=2 kHz durante 2 segundos.

fs = 2000;
tx = 0:1/fs:2;
gaussFun = @(A,x,mu,f) exp(-(x-mu).^2/(2*0.03^2)).*sin(2*pi*f.*x)*A';
s = gaussFun([1 1 1],tx',[0.1 0.65 1],[2 6 2]*100)*1.5;
x = vco(chirp(tx+.1,0,tx(end),3).*exp(-2*(tx-1).^2),[0.1 0.4]*fs,fs);
x = s+x';

Transformadas de Fourier de tiempo corto

Utilice la función pspectrum para calcular la STFT.

  • Divida la señal de Nx muestras en segmentos con longitud M=80 muestras, correspondientes a una resolución temporal de 80/2000=40 milisegundos.

  • Especifique L=16 muestras o el 20% de solapamiento entre los segmentos contiguos.

  • Añada una ventana de Kaiser a cada segmento y especifique un manchado de =0.7.

M = 80;
L = 16;
lk = 0.7;

[S,F,T] = pspectrum(x,fs,"spectrogram", ...
    TimeResolution=M/fs,OverlapPercent=L/M*100, ...
    Leakage=lk);

Compárela con el resultado obtenido con la función spectrogram.

  • Especifique la longitud de la ventana y el solapamiento directamente en las muestras.

  • pspectrum siempre usa una ventana de Kaiser como g(n). El manchado y el factor de forma β de la ventana están relacionados por β=40×(1-).

  • pspectrum siempre usa NDFT=1024 puntos cuando calcula la transformada discreta de Fourier. Puede especificar este número si desea calcular la transformada en un rango de frecuencias bilateral o centrado. Sin embargo, en las transformadas unilaterales, que son las predeterminadas para las señales reales, spectrogram utiliza 1024/2+1=513 puntos. Como alternativa, puede especificar el vector de frecuencias en el que desea calcular la transformada, como en este ejemplo.

  • Si una señal no puede dividirse exactamente en k=Nx-LM-L segmentos, spectrogram la trunca, mientras que pspectrum la rellena con ceros para crear un segmento extra. Para que las salidas sean equivalentes, elimine el segmento final y el elemento final del vector de tiempo.

  • spectrogram devuelve la STFT, cuya magnitud elevada al cuadrado es el espectrograma. pspectrum devuelve el espectro de potencia segmento a segmento, que ya está elevado al cuadrado pero se divide por un factor de ng(n) antes de elevarlo al cuadrado.

  • En las transformadas unilaterales, pspectrum añade un factor extra de 2 al espectrograma.

g = kaiser(M,40*(1-lk));

k = (length(x)-L)/(M-L);
if k~=floor(k)
    S = S(:,1:floor(k));
    T = T(1:floor(k));
end

[s,f,t] = spectrogram(x/sum(g)*sqrt(2),g,L,F,fs);

Para mostrar los espectrogramas calculados por las dos funciones, utilice la función waterplot.

subplot(2,1,1)
waterplot(sqrt(S),F,T)
title("pspectrum")

subplot(2,1,2)
waterplot(s,f,t)
title("spectrogram")

Figure contains 2 axes objects. Axes object 1 with title pspectrum, xlabel Frequency (Hz), ylabel Time (s) contains an object of type patch. Axes object 2 with title spectrogram, xlabel Frequency (Hz), ylabel Time (s) contains an object of type patch.

maxd = max(max(abs(abs(s).^2-S)))
maxd = 
2.4419e-08

Espectros de potencia y gráficas de conveniencia

La función spectrogram tiene un cuarto argumento que se corresponde con el espectro de potencia segmento a segmento o con la densidad espectral de potencia. Al igual que la salida de pspectrum, el argumento ps ya está elevado al cuadrado e incluye el factor de normalización ng(n). En los espectrogramas unilaterales de señales reales, hay que incluir el factor adicional de 2. Establezca el argumento de escala de la función en "power".

[~,~,~,ps] = spectrogram(x*sqrt(2),g,L,F,fs,"power");

max(abs(S(:)-ps(:)))
ans = 
2.4419e-08

Cuando se llaman sin argumentos de salida, tanto pspectrum como spectrogram representan el espectrograma de la señal en decibelios. Incluya el factor de 2 en los espectrogramas unilaterales. Establezca que los mapas de colores sean los mismos en ambas gráficas. Fije los límites del eje x en los mismos valores para hacer visible el segmento extra al final de la gráfica de pspectrum. En la gráfica de spectrogram, muestre la frecuencia en el eje y.

subplot(2,1,1)
pspectrum(x,fs,"spectrogram", ...
    TimeResolution=M/fs,OverlapPercent=L/M*100, ...
    Leakage=lk)
title("pspectrum")
cc = clim;
xl = xlim;

subplot(2,1,2)
spectrogram(x*sqrt(2),g,L,F,fs,"power","yaxis")
title("spectrogram")
clim(cc)
xlim(xl)

Figure contains 2 axes objects. Axes object 1 with title pspectrum, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image. Axes object 2 with title spectrogram, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image.

function waterplot(s,f,t)
% Waterfall plot of spectrogram
    waterfall(f,t,abs(s)'.^2)
    set(gca,XDir="reverse",View=[30 50])
    xlabel("Frequency (Hz)")
    ylabel("Time (s)")
end

Visualice una señal de interferencia de banda estrecha integrada en una señal de banda ancha.

Genere un chirp muestreado a 1 kHz durante 500 segundos. La frecuencia del chirp aumenta de 180 Hz a 220 Hz durante la medición.

fs = 1000;
t = (0:1/fs:500)';

x = chirp(t,180,t(end),220) + 0.15*randn(size(t));

La señal también contiene una sinusoide de 210 Hz. La sinusoide tiene una amplitud de 0,05 y está presente solo durante 1/6 de la duración total de la señal.

idx = floor(length(x)/6);
x(1:idx) = x(1:idx) + 0.05*cos(2*pi*t(1:idx)*210);

Calcule el espectrograma de la señal. Restrinja el rango de frecuencias de 100 Hz a 290 Hz. Especifique una resolución de tiempo de 1 segundo. Ambos componentes de la señal son visibles.

pspectrum(x,fs,'spectrogram', ...
    'FrequencyLimits',[100 290],'TimeResolution',1)

Figure contains an axes object. The axes object with title Fres = 3.9101 Hz, Tres = 1 s, xlabel Time (minutes), ylabel Frequency (Hz) contains an object of type image.

Calcule el espectro de potencia de la señal. La sinusoide débil queda oculta por el chirp.

pspectrum(x,fs,'FrequencyLimits',[100 290])

Figure contains an axes object. The axes object with title Fres = 5.0081 Hz, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains an object of type line.

Calcule el espectro de persistencia de la señal. Ambos componentes de la señal son claramente visibles.

pspectrum(x,fs,'persistence', ...
    'FrequencyLimits',[100 290],'TimeResolution',1)

Figure contains an axes object. The axes object with title Fres = 3.9101 Hz, Tres = 1 s, xlabel Frequency (Hz), ylabel Power Spectrum (dB) contains an object of type image.

Genere un chirp cuadrático muestreado a 1 kHz durante 2 segundos. El chirp tiene una frecuencia inicial de 100 Hz que aumenta hasta 200 Hz, en t = 1 segundo. Calcule el espectrograma con la configuración predeterminada de la función pspectrum. Use la función waterfall para representar el espectrograma.

fs = 1e3;
t = 0:1/fs:2;
y = chirp(t,100,1,200,"quadratic");

[sp,fp,tp] = pspectrum(y,fs,"spectrogram");

waterfall(fp,tp,sp')
set(gca,XDir="reverse",View=[60 60])
ylabel("Time (s)")
xlabel("Frequency (Hz)")

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Time (s) contains an object of type patch.

Calcule y muestre el espectrograma reasignado.

[sr,fr,tr] = pspectrum(y,fs,"spectrogram",Reassign=true);

waterfall(fr,tr,sr')
set(gca,XDir="reverse",View=[60 60])
ylabel("Time (s)")
xlabel("Frequency (Hz)")

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Time (s) contains an object of type patch.

Vuelva a calcular el espectrograma utilizando una resolución de tiempo de 0,2 segundos. Visualice el resultado con la función pspectrum sin argumentos de salida.

pspectrum(y,fs,"spectrogram",TimeResolution=0.2)

Figure contains an axes object. The axes object with title Fres = 12.8337 Hz, Tres = 200 ms, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

Calcule el espectrograma reasignado con la misma resolución de tiempo.

pspectrum(y,fs,"spectrogram",TimeResolution=0.2,Reassign=true)

Figure contains an axes object. The axes object with title Fres = 12.8337 Hz, Tres = 200 ms, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

Cree una señal, muestreada a 4 kHz, que se asemeje a la pulsación de todas las teclas de un teléfono digital. Guarde la señal como un horario de MATLAB®.

fs = 4e3;
t = 0:1/fs:0.5-1/fs;

ver = [697 770 852 941];
hor = [1209 1336 1477];

tones = [];

for k = 1:length(ver)
    for l = 1:length(hor)
        tone = sum(sin(2*pi*[ver(k);hor(l)].*t))';
        tones = [tones;tone;zeros(size(tone))];
    end
end

% To hear, type soundsc(tones,fs)

S = timetable(seconds(0:length(tones)-1)'/fs,tones);

Calcule el espectrograma de la señal. Especifique una resolución de tiempo de 0,5 segundos y un solapamiento de cero entre los segmentos contiguos. Especifique que el manchado es de 0,85, lo que equivale aproximadamente a aplicar una ventana de Hann a los datos.

pspectrum(S,'spectrogram', ...
    'TimeResolution',0.5,'OverlapPercent',0,'Leakage',0.85)

Figure contains an axes object. The axes object with title Fres = 15.6403 Hz, Tres = 500 ms, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image.

El espectrograma muestra que cada tecla se pulsa durante medio segundo, con pausas silenciosas de medio segundo entre cada pulsación. El primer tono tiene un contenido de frecuencia concentrado en torno a 697 Hz y 1209 Hz, correspondiente al dígito '1' del sistema DTMF.

Argumentos de entrada

contraer todo

Señal de entrada, especificada como un vector, una matriz o un timetable de MATLAB®.

  • Si x es un horario, debe contener tiempos de fila finitos y crecientes.

    Nota

    Si en un horario faltan puntos de tiempo o están duplicados, puede solucionarlo con los consejos de Clean Timetable with Missing, Duplicate, or Nonuniform Times.

  • Si x es un horario que representa una señal multicanal, debe tener una única variable que contenga una matriz o múltiples variables formadas por vectores.

Si x está muestreado de forma no uniforme, pspectrum interpola la señal a una malla uniforme para calcular las estimaciones espectrales. La función utiliza la interpolación lineal y asume un tiempo de muestreo igual a la mediana de las diferencias entre puntos de tiempo adyacentes. Para que una señal no muestreada uniformemente sea compatible, el intervalo de tiempo mediano y el intervalo de tiempo medio deben obedecer

1100<Median time intervalMean time interval<100.

Ejemplo: cos(pi./[4;2]*(0:159))'+randn(160,2) es una señal de dos canales formada por sinusoides integrada en ruido blanco.

Ejemplo: timetable(seconds(0:4)',rand(5,2)) especifica una variable aleatoria de dos canales muestreada a 1 Hz durante 4 segundos.

Ejemplo: timetable(seconds(0:4)',rand(5,1),rand(5,1)) especifica una variable aleatoria de dos canales muestreada a 1 Hz durante 4 segundos.

Tipos de datos: single | double
Soporte de números complejos:

Tasa de muestreo, especificada como un escalar numérico positivo.

Valores de tiempo, especificados como un vector, un arreglo de datetime o duration, o un escalar de duration que representan el intervalo de tiempo entre las muestras.

Ejemplo: seconds(0:1/100:1) es un arreglo duration que representa 1 segundo de muestreo a 100 Hz.

Ejemplo: seconds(1) es un escalar duration que representa una diferencia de tiempo de 1 segundo entre muestras de señales consecutivas.

Tipo de espectro que calcular, especificado como 'power', 'spectrogram' o 'persistence':

  • 'power': Calcula el espectro de potencia de la entrada. Utilice esta opción para analizar el contenido frecuencial de una señal estacionaria. Para obtener más información, consulte Cálculo del espectro.

  • 'spectrogram': Calcula el espectrograma de la entrada. Utilice esta opción para analizar cómo cambia el contenido frecuencial de una señal a lo largo del tiempo. Para obtener más información, consulte Cálculo del espectrograma.

  • 'persistence': Calcula el espectro de potencia de persistencia de la entrada. Utilice esta opción para visualizar la fracción de tiempo que un determinado componente de frecuencia está presente en una señal. Para obtener más información, consulte Cálculo del espectro de persistencia.

Nota

Las opciones 'spectrogram' y 'persistence' no son compatibles con la entrada multicanal.

Argumentos de par nombre-valor

contraer todo

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

En las versiones anteriores a la R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: 'Leakage',1,'Reassign',true,'MinThreshold',-35 aplica una ventana rectangular a los datos, calcula una estimación del espectro reasignado y pone a cero todos los valores inferiores a -35 dB.

Límites de la banda de frecuencia, especificados como el par separado por comas que consta de 'FrequencyLimits' y un vector numérico de dos elementos:

  • Si la entrada contiene información temporal, la banda de frecuencia se expresa en Hz.

  • Si la entrada no contiene información temporal, la banda de frecuencia se expresa en unidades normalizadas de rad/muestra.

De forma predeterminada, pspectrum calcula el espectro en todo el intervalo de Nyquist:

  • Si la banda de frecuencia especificada contiene una región que cae fuera del intervalo de Nyquist, entonces pspectrum trunca la banda de frecuencia.

  • Si la banda de frecuencia especificada se encuentra completamente fuera del intervalo de Nyquist, entonces pspectrum genera un error.

Consulte Cálculo del espectro para obtener más información sobre el intervalo de Nyquist.

Si x está muestreado de forma no uniforme, entonces pspectrum interpola linealmente la señal a una malla uniforme y define una tasa de muestreo efectiva igual a la inversa de la mediana de las diferencias entre puntos de tiempo adyacentes. Exprese 'FrequencyLimits' en términos de tasa de muestreo efectiva.

Ejemplo: [0.2*pi 0.7*pi] calcula el espectro entre 0.2π rad/muestra y 0.7π rad/muestra de una señal sin información de tiempo.

Ancho de banda de resolución de frecuencia, especificado como el par separado por comas que consta de 'FrequencyResolution' y un escalar numérico real, expresado en Hz si la entrada contiene información temporal, o en unidades normalizadas de rad/muestra en caso contrario. Este argumento no se puede especificar simultáneamente con 'TimeResolution'. El valor por defecto de este argumento depende del tamaño de los datos de entrada. Para obtener más detalles, consulte Cálculo del espectrograma.

Ejemplo: pi/100 calcula el espectro de una señal sin información de tiempo utilizando una resolución de frecuencia de π/100 rad/muestra.

Manchado espectral, especificado como el par separado por comas que consta de 'Leakage' y un escalar numérico real entre 0 y 1. 'Leakage' controla la atenuación del lóbulo lateral de la ventana de Kaiser en relación con la anchura del lóbulo principal, manteniendo un equilibrio entre la mejora de la resolución y la disminución del manchado:

  • Un valor de manchado grande resuelve los tonos muy espaciados, pero enmascara los tonos débiles cercanos.

  • Un valor de manchado pequeño encuentra tonos pequeños en la proximidad de tonos más grandes, pero difumina las frecuencias cercanas.

Ejemplo: 'Leakage',0 reduce los manchados al mínimo a costa de la resolución espectral.

Ejemplo: 'Leakage',0.85 aplica una ventana de Hann a los datos.

Ejemplo: 'Leakage',1 equivale a aplicar una ventana rectangular a los datos, maximizando el manchado pero mejorando la resolución espectral.

Límite inferior para valores distintos de cero, especificado como el par separado por comas que consta de 'MinThreshold' y un escalar real. pspectrum implementa 'MinThreshold' de forma diferente según el valor del argumento type:

  • 'power' o 'spectrogram': pspectrum establece como cero aquellos elementos de p que cumplen 10 log10(p) ≤ 'MinThreshold'. Especifique 'MinThreshold' en decibelios.

  • 'persistence': pspectrum establece como cero aquellos elementos de p que son inferiores a 'MinThreshold'. Especifique 'MinThreshold' entre 0 y 100%.

Número de bins de potencia para el espectro de persistencia, especificado como el par separado por comas que consta de 'NumPowerBins' y un entero entre 20 y 1024.

Solapamiento entre segmentos contiguos para el espectrograma o el espectro de persistencia, especificado como el par separado por comas que consta de 'OverlapPercent' y un escalar real en el intervalo [0, 100). El valor predeterminado de este argumento depende de la ventana espectral. Para obtener más detalles, consulte Cálculo del espectrograma.

Opción de reasignación, especificada como el par separado por comas que consta de 'Reassign' y un valor lógico. Si esta opción se establece como true, entonces pspectrum agudiza la localización de las estimaciones espectrales realizando una reasignación de tiempo y frecuencia. La técnica de reasignación produce periodogramas y espectrogramas más fáciles de leer e interpretar. Esta técnica reasigna cada estimación espectral al centro de energía de su bin, en lugar del centro geométrico de este. La técnica proporciona una localización exacta de los chirps e impulsos.

Resolución temporal del espectrograma o del espectro de persistencia, especificada como el par separado por comas que consta de 'TimeResolution' y un escalar real, expresado en segundos si la entrada contiene información temporal, o como un número entero de muestras en caso contrario. Este argumento controla la duración de los segmentos utilizados para calcular los espectros de potencia de tiempo corto que forman las estimaciones del espectrograma o del espectro de persistencia. 'TimeResolution' no puede especificarse simultáneamente con 'FrequencyResolution'. El valor predeterminado de este argumento depende del tamaño de los datos de entrada y, si se ha especificado, de la resolución de la frecuencia. Para obtener más detalles, consulte Cálculo del espectrograma.

Estimación espectral bilateral, especificada como el par separado por comas que consta de 'TwoSided' y un valor lógico.

  • Si esta opción es true, la función calcula estimaciones de espectro centradas y bilaterales sobre [–π, π]. Si la entrada tiene información temporal, las estimaciones se calculan sobre [–fs/2, fs/2], donde fs es la tasa de muestreo efectiva.

  • Si la opción es false, la función calcula estimaciones de espectro unilaterales sobre el intervalo de Nyquist [0, π]. Si la entrada tiene información temporal, las estimaciones se calculan sobre [0, fs/2], donde fs es la tasa de muestreo efectiva. Para conservar la potencia total, la función multiplica la potencia por 2 en todas las frecuencias excepto 0 y la frecuencia de Nyquist. Esta opción es válida solo para señales reales.

Si no se especifica, 'TwoSided' es por defecto false en señales de entrada reales y true en señales de entrada complejas.

Argumentos de salida

contraer todo

Espectro, devuelto como un vector o una matriz. El tipo y el tamaño del espectro dependen del valor del argumento type:

  • 'power': p contiene la estimación del espectro de potencia de cada canal de x. En este caso, p es del tamaño Nr × Nch, donde Nf es la longitud de f y Nch es el número de canales de x. pspectrum escala el espectro de manera que, si el contenido de frecuencia de una señal cae exactamente dentro de un bin, su amplitud en ese bin es la potencia media verdadera de la señal. Por ejemplo, la potencia media de una sinusoide es la mitad del cuadrado de la amplitud de la sinusoide. Para obtener más detalles, consulte Measure Power of Deterministic Periodic Signals.

  • 'spectrogram': p contiene una estimación del espectro de potencia en tiempo corto y localizado en el tiempo de x. En este caso, p es del tamaño Nf × Nt, donde Nf es la longitud de f y Nt es la longitud de t.

  • 'persistence': p contiene las probabilidades, expresadas en porcentajes, de que la señal tenga componentes de un determinado nivel de potencia en una ubicación de tiempo y frecuencia determinada. En este caso, p es del tamaño Npwr × Nf, donde Npwr es la longitud de pwr y Nf es la longitud de f.

Frecuencias del espectro, devueltas como vector. Si la señal de entrada contiene información temporal, f contiene frecuencias expresadas en Hz. Si la señal de entrada no contiene información de tiempo, las frecuencias están en unidades normalizadas de rad/muestra.

Valores de tiempo del espectrograma, devueltos como vector de valores de tiempo en segundos o como arreglo de duration. Si la entrada no tiene información de tiempo, entonces t contiene números de muestra. t contiene los valores de tiempo correspondientes a los centros de los segmentos de datos utilizados para calcular las estimaciones del espectro de potencia en tiempo corto.

  • Si la entrada de pspectrum es un horario, entonces t tiene el mismo formato que los valores de tiempo del horario de entrada.

  • Si la entrada de pspectrum es un vector numérico muestreado en un conjunto de instantes de tiempo especificado por una matriz numérica, duration, o el arreglo datetime, entonces t tiene el mismo tipo y formato que los valores de tiempo de entrada.

  • Si la entrada de pspectrum es un vector numérico con una diferencia de tiempo especificada entre muestras consecutivas, entonces t es un arreglo de duration.

Valores de potencia del espectro de persistencia, devueltos como vector.

Más acerca de

contraer todo

Referencias

[1] harris, fredric j. “On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform.” Proceedings of the IEEE®. Vol. 66, January 1978, pp. 51–83.

[2] Welch, Peter D. "The Use of Fast Fourier Transform for the Estimation of Power Spectra: A Method Based on Time Averaging Over Short, Modified Periodograms." IEEE Transactions on Audio and Electroacoustics. Vol. 15, June 1967, pp. 70–73.

Capacidades ampliadas

expandir todo

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2017b

expandir todo