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.

medfreq

Frecuencia mediana

Descripción

freq = medfreq(x) estima la mediana de la frecuencia normalizada, , del espectro de potencia de una señal de dominio del tiempo, .freqx

ejemplo

freq = medfreq(x,fs) estima la frecuencia media en términos de la frecuencia de muestreo, .fs

ejemplo

freq = medfreq(pxx,f) devuelve la frecuencia mediana de una estimación de densidad espectral de potencia (PSD), .pxx Las frecuencias, , corresponden a las estimaciones en .fpxx

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

freq = medfreq(___,freqrange) especifica el intervalo de frecuencia sobre el que calcular la frecuencia mediana. Esta sintaxis puede incluir cualquier combinación de argumentos de entrada de sintaxis anteriores, siempre y cuando el segundo argumento de entrada sea o .fsf Si la segunda entrada se pasa como vacía, se asumirá la frecuencia normalizada. El valor predeterminado para es el ancho de banda completo de la señal de entrada.freqrange

ejemplo

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

medfreq(___) sin argumentos de salida traza el PSD o el espectro de potencia y anota la frecuencia mediana.

Ejemplos

contraer todo

Generar 1024 muestras de un chirrido muestreado a 1024 kHz. Especifique el chirrido para que tenga una frecuencia inicial de 50 kHz y alcance los 100 kHz al final del muestreo. Agregue el ruido gaussiano blanco de tal forma que la relación señal-ruido sea de 40 dB. Restablezca 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);

Estimar la frecuencia media del chirrido. Trazar la densidad espectral de potencia (PSD) y anotar la frecuencia mediana.

medfreq(x,Fs)

ans = 7.4998e+04 

Generar otro chirrido. 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. Agregue ruido gaussiano blanco.

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

Concatenar los chirridos para producir una señal de dos canales. Estimar la frecuencia media de cada canal.

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

    0.7500    2.4999

Trazar los PSD de los dos canales y anotar sus frecuencias medianas.

medfreq([x x2],Fs);

Agregue los dos canales para formar una nueva señal. Trazar el PSD y anotar la frecuencia mediana.

medfreq(x+x2,Fs)

ans = 2.3756e+05 

Generar 1024 muestras de un sinusoides de 100.123 kHz muestreado a 1024 kHz. Agregue el ruido gaussiano blanco de tal forma que la relación señal-ruido sea de 40 dB. Restablezca 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 para calcular la densidad espectral de potencia (PSD) de la señal.periodogram Especifique una ventana Kaiser con la misma longitud que la señal y un factor de forma de 38. Calcule la frecuencia mediana de la señal y anote la frecuencia en una gráfica del PSD.

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

Generar otro sinusoides, este con una frecuencia de 257.321 kHz y una amplitud que es el doble que el primer sinusoides. Añade ruido blanco.

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

Concatenar los sinusoides para producir una señal de dos canales. Calcule el PSD de cada canal y utilice el resultado para determinar la frecuencia mediana.

[Pyy,f] = periodogram([x x2],kaiser(nSamp,38),[],Fs);  y = medfreq(Pyy,f)
y = 1×2
105 ×

    1.0012    2.5731

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

medfreq(Pyy,f);

Agregue los dos canales para formar una nueva señal. Calcule el PSD y anote la frecuencia mediana.

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

Generar una señal cuyo PSD se asemeja a la respuesta de frecuencia de un filtro FIR de paso de banda de orden 88 con frecuencias de corte normalizadas

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>2</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra y
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>4</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra.

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

Calcular la frecuencia mediana de la señal entre

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>3</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra y
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>6</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra. Trazar el PSD y anotar la frecuencia mediana y el intervalo de medición.

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

Salida de la frecuencia mediana y la potencia de la banda del intervalo de medición. Especificar una frecuencia de muestreo de

<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
</mrow>
</math>
equivale a dejar la tasa sin establecer.

[mdf,power] = medfreq(d,2*pi,[0.3 0.6]*pi);  fprintf('Mean = %.3f*pi, power = %.1f%% of total \n', ...     mdf/pi,power/bandpower(d)*100)
Mean = 0.371*pi, power = 77.4% of total  

Añadir un segundo canal con frecuencias de corte normalizadas

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra y
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>8</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra y una amplitud que es una décima parte de la del primer canal.

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

Calcular la frecuencia mediana de la señal entre

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>3</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra y
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>9</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra. Trazar el PSD y anotar la frecuencia mediana de cada canal y el intervalo de medición.

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

Salida de la frecuencia mediana de cada canal. Dividir por

<math display="block">
<mrow>
<mi>π</mi>
</mrow>
</math>
.

mdf = medfreq(d,[],[0.3 0.9]*pi)/pi
mdf = 1×2

    0.3706    0.6500

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o matriz. Si es un vector, se trata como un solo canal.x Si es una matriz, calcula la frecuencia mediana de cada columna de forma independiente. debe ser de valor finito.xmedfreqxx

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

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

Tipos de datos: single | double

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

Tipos de datos: single | double

Densidad espectral de potencia (PSD), especificada como vector o matriz. Si es una matriz, calcula la frecuencia mediana de cada columna de forma independiente.pxxmedfreqpxx

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

Ejemplo: especifica la estimación de la DSP de periodograma de un sinusoides de dos canales ruidoso muestreado a 2 oS y las frecuencias a las que se calcula.[pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2))

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 es una matriz, calcula la frecuencia mediana de cada columna de forma independiente.sxxmedfreqsxx

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

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

Tipos de datos: single | double

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

Tipos de datos: single | double

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

Tipos de datos: single | double

Argumentos de salida

contraer todo

Frecuencia mediana, especificada como escalar o vectorial.

  • Si especifica una frecuencia de muestreo, tiene las mismas unidades que .freqfs

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

Potencia de banda, devuelta como escalar o vectorial.

Consulte también

| | | |

Introducido en R2015a