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.

poctave

Generar espectro de octavas

Descripción

ejemplo

p = poctave(x,fs) devuelve el espectro de octavas de una señal muestreada a una velocidad.xfs El espectro de octavas es la potencia media sobre las bandas de octava según lo definido por el estándar ANSI S1.11.[1] Si es una matriz, la función estima el espectro de octavas de forma independiente para cada columna y devuelve el resultado en la columna correspondiente de .xp

p = poctave(xt) devuelve el espectro de octavas de una señal almacenada en el calendario.MATLAB®xt

ejemplo

p = poctave(___,Name,Value) especifica opciones adicionales para cualquiera de las sintaxis anteriores mediante argumentos de par nombre-valor.

ejemplo

p = poctave(pxx,fs,f,Name,Value,'psd') realiza el suavizado de octavas mediante la conversión de una densidad espectral de potencia, , a un espectro de potencia de 1 / octava, donde está el número de subbandas en la banda de octava.pxxbb Las frecuencias en corresponden a las estimaciones PSD en .fpxx

[p,cf] = poctave(___) también devuelve las frecuencias centrales de las bandas de octava sobre las que se calcula el espectro de octavas.

poctave(___) sin argumentos de salida traza el espectro de octavas en la figura actual.

Ejemplos

contraer todo

Generar

<math display="inline">
<mrow>
<msup>
<mrow>
<mn>10</mn>
</mrow>
<mrow>
<mn>5</mn>
</mrow>
</msup>
</mrow>
</math>
muestras de ruido gaussiano blanco. Cree una señal de ruido pseudorosa filtrando el ruido blanco con un filtro cuyos ceros y polos están todos en el eje positivo.x Visualice los ceros y los polos.

N = 1e5; wn = randn(N,1);  z = [0.982231570015379 0.832656605953720 0.107980893771348]'; p = [0.995168968915815 0.943841773712820 0.555945259371364]';  [b,a] = zp2tf(z,p,1); pn = filter(b,a,wn);  zplane(z,p)

Cree una señal de dos canales que consista en ruido blanco y rosa. Calcular el espectro de octavas. Supongamos una frecuencia de muestreo de 44,1 kHz. Ajuste la banda de frecuencia de 30 Hz a la frecuencia Nyquist.

sg = [wn pn];  fs = 44100;  poctave(sg,fs,'FrequencyLimits',[30 fs/2]) legend('White noise','Pink noise','Location','SouthEast')

El ruido blanco tiene un espectro de octavas que aumenta con la frecuencia. El espectro de octavas del ruido rosa es aproximadamente constante en todo el rango de frecuencias. El espectro de octavas de una señal ilustra cómo el oído humano percibe la señal.

Generar

<math display="inline">
<mrow>
<msup>
<mrow>
<mn>10</mn>
</mrow>
<mrow>
<mn>5</mn>
</mrow>
</msup>
</mrow>
</math>
muestras de ruido gaussiano blanco muestreado a 44,1 kHz. Cree una señal de ruido rosa filtrando el ruido blanco con un filtro cuyos ceros y polos están todos en el eje positivo.x

N = 1e5; fs = 44.1e3; wn = randn(N,1);  z = [0.982231570015379 0.832656605953720 0.107980893771348]'; p = [0.995168968915815 0.943841773712820 0.555945259371364]'; [b,a] = zp2tf(z,p,1);  pn = filter(b,a,wn);

Calcular el espectro de octavas de la señal. Especifique tres bandas por octava y restrinja el rango de frecuencia total de 200 Hz a 20 kHz. Almacene los pares nombre-valor en una matriz de celdas para su uso posterior. Visualice el espectro.

flims = [200 20e3]; bpo = 3; opts = {'FrequencyLimits',flims,'BandsPerOctave',bpo};  poctave(pn,fs,opts{:});

Calcular el espectro de octava de la señal con los mismos ajustes, pero utilizar la ponderación C. El espectro ponderado en C cae a frecuencias superiores a 6 kHz.

hold on poctave(pn,fs,opts{:},'Weighting','C')

Calcule el espectro de octavas de nuevo, pero ahora use la ponderación A. El espectro ponderado A alcanza un máximo de aproximadamente 3 kHz y cae por encima de 6 kHz y en el extremo inferior de la banda de frecuencias.

poctave(pn,fs,opts{:},'Weighting','A') hold off legend('Pink noise','C-weighted','A-weighted','Location','SouthWest')

Generar

<math display="inline">
<mrow>
<msup>
<mrow>
<mn>10</mn>
</mrow>
<mrow>
<mn>5</mn>
</mrow>
</msup>
</mrow>
</math>
muestras de ruido gaussiano blanco muestreado a 44,1 kHz. Cree una señal de ruido rosa filtrando el ruido blanco con un filtro cuyos ceros y polos están todos en el eje positivo.x

N = 1e5; fs = 44.1e3; wn = randn(N,1);  z = [0.982231570015379 0.832656605953720 0.107980893771348]'; p = [0.995168968915815 0.943841773712820 0.555945259371364]'; [b,a] = zp2tf(z,p,1);  pn = filter(b,a,wn);

Calcular la estimación de Welch de la densidad espectral de potencia para ambas señales. Divida las señales en segmentos de muestra 2048, especifique una superposición del 50% entre los segmentos adyacentes, muestree cada segmento con una ventana Hamming y utilice 4096 puntos DFT.

[pxx,f] = pwelch([wn pn],hamming(2048),1024,4096,fs);

Visualice las densidades espectrales en una banda de frecuencia que va desde 200 Hz hasta la frecuencia Nyquist. Utilice una escala logarítmica para el eje de frecuencia.

pwelch([wn pn],hamming(2048),1024,4096,fs) ax = gca; ax.XScale = 'log'; xlim([200 fs/2]/1000) legend('White','Pink')

Calcular y mostrar los espectros de octava de las señales. Utilice el mismo rango de frecuencia que en el trazado anterior. Especifique seis bandas por octava y calcule los espectros utilizando filtros de octavo orden.

poctave(pxx,fs,f,'BandsPerOctave',6,'FilterOrder',8,'FrequencyLimits',[200 fs/2],'psd') legend('White','Pink')

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o matriz. Si es un vector, lo trata como un solo canal.xpoctave Si es una matriz, calcula el espectro de octavas de forma independiente para cada columna y devuelve el resultado en la columna correspondiente de .xpoctavep

Ejemplo: especifica un sinusoides ruidoso.sin(2*pi*(0:127)/16)+randn(1,128)/100

Ejemplo: especifica un sinusoides de dos canales.[2 1].*sin(2*pi*(0:127)'./[16 64])

Tipos de datos: single | double

Frecuencia de muestreo, especificada como un escalar positivo expresado en Hz. La frecuencia de muestreo no puede ser inferior a 7 Hz.

Horario de entrada. debe contener tiempos de fila cada vez mayores, finitos y uniformemente espaciados.xt Si representa una señal multicanal, debe tener una sola variable que contenga una matriz o varias variables que consistan en vectores.xt

Si falta un horario o se duplican los puntos de tiempo, puede corregirlo con las sugerencias de .Clean Timetable with Missing, Duplicate, or Nonuniform Times (MATLAB)

Ejemplo: especifica un proceso aleatorio muestreado a 1 Hz durante 4 segundos.timetable(seconds(0:4)',randn(5,1))

Densidad espectral de potencia (PSD), especificada como vector o matriz con elementos no negativos reales. 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))

Frecuencias PSD, especificadas como vector. debe ser finito, estrictamente creciente y uniformemente espaciado en la escala lineal.f

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))

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: calcula el espectro de octavas utilizando filtros de peso A y 8o orden.'Weighting','A','FilterOrder',8

Número de subbandas en la banda de octava, especificado como el par separado por comas que consta de y 1, 3/2, 2, 3, 6, 12, 24, 48 o 96.'BandsPerOctave' Este parámetro dicta el ancho de una banda de fracciones de octava. En una banda de frecuencia de este tipo, la frecuencia del borde superior es la frecuencia de borde inferior 21/b, donde está el número de subbandas.b

Tipos de datos: single | double

Orden de los filtros de paso de banda, especificado como el par separado por comas que consta de y un entero par positivo.'FilterOrder'

Tipos de datos: single | double

Banda de frecuencia, especificada como el par separado por comas que consta de un vector de dos elementos.'FrequencyLimits' El valor inferior del vector debe ser de al menos 3 Hz. El valor más alto del vector debe ser menor o igual que la frecuencia Nyquist. Para algunas combinaciones de frecuencias y anchuras centrales de banda de octava, el valor más alto del vector debe ser al menos max(3,3*fs/48e3) para garantizar la estabilidad del filtro.

Tipos de datos: single | double

Ponderación de frecuencia, especificada como el par separado por comas que consta de y uno de los siguientes:'Weighting'

  • : no realiza ninguna ponderación de frecuencia en la entrada.'none'poctave

  • — realiza la ponderación A en la entrada.'A'poctave El estándar ANSI S1.42 define la curva de ponderación A. El estándar IEC 61672-1 define los límites de atenuación mínimo y máximo para un filtro de ponderación A. El estándar ANSI S1.42.2001 define la curva de ponderación especificando polos y ceros analógicos.

  • — realiza la ponderación C en la entrada.'C'poctave El estándar ANSI S1.42 define la curva de ponderación En C. El estándar IEC 61672-1 define los límites de atenuación mínimo y máximo para un filtro de ponderación C. El estándar ANSI S1.42.2001 define la curva de ponderación especificando polos y ceros analógicos.

  • Vector: trata la entrada como un vector de coeficientes que especifican un filtro de respuesta de impulso finito (FIR).poctave

  • Matriz: trata la entrada como una matriz de coeficientes de sección de segundo orden que especifican un filtro de respuesta de impulso infinito (IIR).poctave La matriz debe tener al menos dos filas y exactamente seis columnas.

  • Matriz de celdas 1 por 2: trata la entrada como los coeficientes del numerador y del denominador, en ese orden, que especifican la función de transferencia de un filtro IIR.poctave

  • object — trata la entrada como un filtro diseñado con .digitalFilterpoctavedesignfilt

Este argumento solo se admite cuando la entrada es una señal. El suavizado de octavas no admite la ponderación de frecuencia.

Ejemplo: especifica un filtro FIR de 30o orden con una frecuencia de corte normalizada de 0,5o rad/muestra.'Weighting',fir1(30,0.5)

Ejemplo: especifica un filtro Butterworth de tercer orden con una frecuencia normalizada de 3 dB de 0,5o rad/muestra.'Weighting',[2 4 2 6 0 2;3 3 0 6 0 0]

Ejemplo: especifica un filtro Butterworth de tercer orden con una frecuencia normalizada de 3 dB de 0,5o rad/muestra.'Weighting',{[1 3 3 1]/6 [3 0 1]/3}

Ejemplo: especifica un filtro Butterworth de tercer orden con una frecuencia normalizada de 3 dB de 0,5o rad/muestra.'Weighting',designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5)

Tipos de datos: single | double | char | string | cell

Argumentos de salida

contraer todo

Espectro de octavas, devuelto como vector o matriz.

Frecuencias centrales, devueltas como vector. contiene una lista de frecuencias centrales de las bandas de octava sobre las que se estimó el espectro de octavas. tiene unidades de hercios.cfpoctavecf

Referencias

[1] Specification for Octave-Band and Fractional-Octave-Band Analog and Digital Filters. ANSI Standard S1.11-2004. Melville, NY: Acoustical Society of America, 2004.

[2] Smith, Julius Orion, III. "Example: Synthesis of 1/F Noise (Pink Noise)." In Spectral Audio Signal Processing. http://ccrma.stanford.edu/~jos/sasp/.

Consulte también

Introducido en R2018a