Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

meanfreq

Descripción

ejemplo

freq = meanfreq(x) estima la frecuencia media normalizada, freq, del espectro de potencia de una señal en el dominio de tiempo, x. Para calcular el espectro de potencia, meanfreq utiliza la función periodogram con una ventana rectangular y un número de puntos de la DFT igual a la longitud de x. Si x es una matriz, la función calcula la frecuencia media de cada columna de x independientemente.

ejemplo

freq = meanfreq(x,fs) estima la frecuencia media en función de la tasa de muestreo, fs.

ejemplo

freq = meanfreq(pxx,f) devuelve la frecuencia media de una estimación de densidad espectral de potencia (PSD), pxx. Las frecuencias, f, se corresponden con las estimaciones en pxx.

freq = meanfreq(sxx,f,rbw) devuelve la frecuencia media de una estimación del espectro de potencia, sxx, con un ancho de banda de resolución rbw.

ejemplo

freq = meanfreq(___,freqrange) especifica el rango de frecuencias sobre el que se calcula la frecuencia media. Esta sintaxis puede incluir cualquier combinación de argumentos de entrada de las sintaxis anteriores, siempre que el segundo argumento de entrada sea fs o f. Si la segunda entrada se pasa como vacía, se asumirá la frecuencia normalizada. El valor predeterminado de freqrange es todo el ancho de banda de la señal de entrada.

ejemplo

[freq,power] = meanfreq(___) también devuelve la potencia de banda, power, del espectro. Si se especifica freqrange, power contiene la potencia de banda dentro de freqrange.

ejemplo

meanfreq(___) sin argumentos de salida representa la PSD o el espectro de potencia y anota la frecuencia media.

Ejemplos

contraer todo

Genere 1024 muestras de un chirp muestreado a 1024 kHz. El chirp presenta una frecuencia inicial de 50 kHz y alcanza los 100 kHz al finalizar el muestreo. Añada ruido blanco gaussiano hasta que la relación señal-ruido sea de 40 dB. Reinicie el generador de números aleatorios para obtener resultados reproducibles.

nSamp = 1024;
Fs = 1024e3;
SNR = 40;
rng default

t = (0:nSamp-1)'/Fs;

x = chirp(t,50e3,nSamp/Fs,100e3);
x = x+randn(size(x))*std(x)/db2mag(SNR);

Estime la frecuencia media del chirp. Represente la densidad espectral de potencia (PSD) y anote la frecuencia media.

meanfreq(x,Fs)

Figure contains an axes object. The axes object with title Mean Frequency Estimate: 75.032 kHz, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 2 objects of type line.

ans = 7.5032e+04

Genere otro chirp. Especifique una frecuencia inicial de 200 kHz, una frecuencia final de 300 kHz y una amplitud que sea el doble que la de la primera señal. Añada ruido blanco gaussiano.

x2 = 2*chirp(t,200e3,nSamp/Fs,300e3);
x2 = x2+randn(size(x2))*std(x2)/db2mag(SNR);

Concatene los chirps para producir una señal de dos canales. Calcule la frecuencia media de cada canal.

y = meanfreq([x x2],Fs)
y = 1×2
105 ×

    0.7503    2.4999

Represente las PSD de los dos canales y anote sus frecuencias medias.

meanfreq([x x2],Fs);

Figure contains an axes object. The axes object with title Mean Frequency Estimate, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 4 objects of type line.

Añada los dos canales para formar una nueva señal. Represente la PSD y anote la frecuencia media.

meanfreq(x+x2,Fs)

Figure contains an axes object. The axes object with title Mean Frequency Estimate: 214.962 kHz, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 2 objects of type line.

ans = 2.1496e+05

Genere 1024 muestras de una sinusoide de 100,123 kHz muestreada a 1024 kHz. Añada ruido blanco gaussiano hasta que la relación señal-ruido sea de 40 dB. Reinicie el generador de números aleatorios para obtener resultados reproducibles.

nSamp = 1024;
Fs = 1024e3;
SNR = 40;
rng default

t = (0:nSamp-1)'/Fs;

x = sin(2*pi*t*100.123e3);
x = x + randn(size(x))*std(x)/db2mag(SNR);

Utilice la función periodogram para calcular la densidad espectral de potencia (PSD) de la señal. Especifique una ventana de Kaiser con la misma longitud que la señal y un factor de forma de 38. Estime la frecuencia media de la señal y anótela en una gráfica de la PSD.

[Pxx,f] = periodogram(x,kaiser(nSamp,38),[],Fs);

meanfreq(Pxx,f);

Figure contains an axes object. The axes object with title Mean Frequency Estimate: 100.134 kHz, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 2 objects of type line.

Genere otra sinusoide, esta vez con una frecuencia de 257,321 kHz y que tenga el doble de amplitud que la primera. Añada ruido blanco.

x2 = 2*sin(2*pi*t*257.321e3);
x2 = x2 + randn(size(x2))*std(x2)/db2mag(SNR);

Concatene las sinusoides para producir una señal de dos canales. Estime la PSD de cada canal y utilice el resultado para determinar la frecuencia media.

[Pyy,f] = periodogram([x x2],kaiser(nSamp,38),[],Fs);

y = meanfreq(Pyy,f)
y = 1×2
105 ×

    1.0013    2.5732

Anote las frecuencias medias de los dos canales en una gráfica de las PSD.

meanfreq(Pyy,f);

Figure contains an axes object. The axes object with title Mean Frequency Estimate, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 4 objects of type line.

Añada los dos canales para formar una nueva señal. Estime la PSD y anote la frecuencia media.

[Pzz,f] = periodogram(x+x2,kaiser(nSamp,38),[],Fs);

meanfreq(Pzz,f);

Figure contains an axes object. The axes object with title Mean Frequency Estimate: 225.775 kHz, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 2 objects of type line.

Genere una señal cuya PSD se asemeje a la respuesta en frecuencia de un filtro FIR paso banda de 88.º orden con frecuencias de corte normalizadas de 0.25π rad/muestra y de 0.45π rad/muestra.

d = fir1(88,[0.25 0.45]);

Calcule la frecuencia media de la señal entre 0.3π rad/muestra y 0.6π rad/muestra. Represente la PSD y anote la frecuencia media y el intervalo de medición.

meanfreq(d,[],[0.3 0.6]*pi);

Figure contains an axes object. The axes object with title Mean Frequency Estimate: blank 0.373 blank times blank pi blank rad/sample, xlabel Normalized Frequency ( times pi blank mrad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 4 objects of type line, patch.

Obtenga como salida la frecuencia media y la potencia de banda del intervalo de medición. Especificar una tasa de muestreo de 2π equivale a dejar la tasa sin ajustar.

[mnf,power] = meanfreq(d,2*pi,[0.3 0.6]*pi);

fprintf('Mean = %.3f*pi, power = %.1f%% of total \n', ...
    mnf/pi,power/bandpower(d)*100)
Mean = 0.373*pi, power = 75.6% of total 

Añada un segundo canal con frecuencias de corte normalizadas de 0.5π rad/muestra y de 0.8π rad/muestra y con una amplitud que sea la décima parte de la del primer canal.

d = [d;fir1(88,[0.5 0.8])/10]';

Calcule la frecuencia media de la señal entre 0.3π rad/muestra y 0.9π rad/muestra. Represente la PSD y anote la frecuencia media de cada canal y el intervalo de medición.

meanfreq(d,[],[0.3 0.9]*pi);

Figure contains an axes object. The axes object with title Mean Frequency Estimate, xlabel Normalized Frequency ( times pi blank mrad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 6 objects of type line, patch.

Obtenga como salida la frecuencia media de cada canal. Divídala por π.

mnf = meanfreq(d,[],[0.3 0.9]*pi)/pi
mnf = 1×2

    0.3730    0.6500

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o matriz. Si x es un vector, se trata como un solo canal. Si x es una matriz, entonces meanfreq calcula la frecuencia media de cada columna de x independientemente. x debe ser un valor finito.

Ejemplo: cos(pi/4*(0:159))+randn(1,160) es una señal de vector fila monocanal.

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

Tipos de datos: single | double

Tasa de muestreo, especificada como un escalar real positivo. La tasa de muestreo es el número de muestras por unidad de tiempo. Si el tiempo se mide en segundos, la tasa de muestreo está en hercios.

Tipos de datos: single | double

Densidad espectral de potencia (PSD), especificada como vector o matriz. Si pxx es una matriz, entonces meanfreq calcula la frecuencia media de cada columna de pxx independientemente.

La densidad espectral de potencia debe expresarse en unidades lineales, no en decibelios. Utilice db2pow para convertir los valores de decibelios en valores de potencia.

Ejemplo: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2)) especifica la estimación del periodograma PSD de una sinusoide ruidosa de dos canales muestreada a 2π Hz y las frecuencias a las que se calcula.

Tipos de datos: single | double

Frecuencias, especificadas como vector.

Tipos de datos: single | double

Estimación del espectro de potencia, especificada como vector o matriz. Si sxx es una matriz, entonces meanfreq calcula la frecuencia media de cada columna de sxx independientemente.

El espectro de potencia debe expresarse en unidades lineales, no en decibelios. Utilice db2pow para convertir los valores de decibelios en valores de potencia.

Ejemplo: [sxx,w] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2),'power') especifica la estimación del espectro de potencia del periodograma de una sinusoide de dos canales integrada en ruido blanco gaussiano y las frecuencias normalizadas a las que se calcula.

Tipos de datos: single | double

Ancho de banda de la resolución, especificado como un escalar positivo. El ancho de banda de la resolución es el producto de dos valores: la resolución de frecuencia de la transformada discreta de Fourier y el ancho de banda de ruido equivalente de la ventana utilizada para calcular la PSD.

Tipos de datos: single | double

Rango de frecuencia, especificado como vector de dos elementos de valores reales. Si no se especifica freqrange, meanfreq utiliza todo el ancho de banda de la señal de entrada.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Frecuencia media, especificada como un escalar o vector.

  • Si se especifica una tasa de muestreo, freq tiene las mismas unidades que fs.

  • Si no se especifica una tasa de muestreo, freq tiene unidades de rad/muestra.

Potencia de banda, devuelta como un escalar o un vector.

Referencias

[1] Phinyomark, Angkoon, Sirinee Thongpanja, Huosheng Hu, Pornchai Phukpattaranont, and Chusak Limsakul. "The Usefulness of Mean and Median Frequencies in Electromyography Analysis." In Computational Intelligence in Electromyography Analysis – A Perspective on Current Applications and Future Challenges, edited by Ganesh R. Naik. London: IntechOpen, 2012. https://doi.org/10.5772/50639.

Capacidades ampliadas

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

Historial de versiones

Introducido en R2015a

expandir todo

Consulte también

| | | |