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

Genere un espectro de octava

Descripción

ejemplo

p = poctave(x,fs) Devuelve el espectro de octava de una señal muestreada a una velocidad.xfs El espectro de octava es el poder promedio sobre las bandas de octava como se define en la norma ANSI S 1.11.[1] Si es una matriz, entonces la función estima el espectro de octava de forma independiente para cada columna y devuelve el resultado en la columna correspondiente de.xp

p = poctave(xt) Devuelve el espectro de octava 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 octava convirtiendo una densidad espectral de potencia, a un espectro de potencia de 1/octava, donde es el número de subbandas en la banda de octava.pxxbb Las frecuencias corresponden a las estimaciones de 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 octava.

poctave(___) sin argumentos de salida traza el espectro de octava 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 pseudorosado 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 consistente en ruido blanco y rosa. Calcule el espectro de octava. Suponga una frecuencia de muestreo de 44,1 kHz. Ajuste la banda de frecuencias 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 octava que aumenta con la frecuencia. El espectro de octava del ruido rosado es aproximadamente constante en todo el rango de frecuencias. El espectro de octava 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 muestreados a 44,1 kHz. Cree una señal de ruido rosado 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);

Calcule el espectro de octava 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{:});

Calcule el espectro de octava de la señal con los mismos ajustes, pero utilice ponderación C. El espectro ponderado en C se cae a frecuencias por encima de 6 kHz.

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

Calcule el espectro de octava de nuevo, pero ahora use A-ponderación. El espectro ponderado A se alcanza A unos 3 kHz y se 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 muestreados a 44,1 kHz. Cree una señal de ruido rosado 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);

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

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

Visualice las densidades espectrales en una banda de frecuencias que oscila entre 200 Hz y 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')

Computa y visualiza los espectros de octava de las señales. Utilice el mismo rango de frecuencias que en la gráfica anterior. Especifique seis bandas por octava y calcule los espectros utilizando filtros de orden 8.

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, a continuación, calcula el espectro de octava de forma independiente para cada columna y devuelve el resultado en la columna correspondiente de.xpoctavep

Ejemplo: especifica una sinusoide ruidosa.sin(2*pi*(0:127)/16)+randn(1,128)/100

Ejemplo: especifica una sinusoide 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.

Calendario de entrada. debe contener tiempos de fila crecientes, finitos y espaciados uniformemente.xt Si representa una señal multicanal, debe tener una sola variable que contenga una matriz o varias variables compuestas por vectores.xt

Si un horario ha desaparecido o ha duplicado los puntos de tiempo, puede arreglarlo usando las sugerencias en.Limpie el horario con los tiempos perdidos, duplicados o no uniformes (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 PSD de periodograma de una sinusoide de dos canales ruidosa muestreada a 2 π Hz y las frecuencias en las que se calcula.[pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2))

Frecuencias PSD, especificadas como vector. deben ser finitos, estrictamente crecientes y espaciados uniformemente en la escala lineal.f

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

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.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 octava utilizando filtros A-ponderación y 8º orden.'Weighting','A','FilterOrder',8

Número de subbandas en la banda de octava, especificadas 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 octava fraccionada. En dicha banda de frecuencias, la frecuencia del borde superior es el tiempo de frecuencia de borde inferior 21/b, donde está el número de subbandas.b

Tipos de datos: single | double

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

Tipos de datos: single | double

Banda de frecuencias, especificada como el par separado por comas que consta de un vector de dos elementos.'FrequencyLimits' Los valores especificados deben estar dentro de la gama Nyquist. El valor inferior del vector debe ser de al menos 3 Hz. Si especifica un valor inferior superior a 3 Hz pero menor que 3*fs/48e3, la función cambia el valor inferior a 3*fs/48e3. Si especifica valores de forma que el límite inferior sea mayor que la frecuencia Nyquist, la función solicitará que especifique una banda de frecuencias más amplia.

Tipos de datos: single | double

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

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

  • : realiza una ponderación A en la entrada.'A'poctave La norma ANSI S 1.42 define la curva de ponderación A. La norma IEC 61672-1 define los límites de atenuación mínimos y máximos para un filtro de ponderación A. La norma ANSI S 1.42.2001 define la curva de ponderación especificando polos y ceros analógicos.

  • : realiza la ponderación C en la entrada.'C'poctave La norma ANSI S 1.42 define la curva de ponderación C. La norma IEC 61672-1 define los límites de atenuación mínimos y máximos para un filtro de ponderación C. La norma ANSI S 1.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 impulsos infinitos (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 de numerador y denominador, en ese orden, que especifican la función de transferencia de un filtro IIR.poctave

  • objeto: trata la entrada como un filtro que se diseñó utilizando.digitalFilterpoctavedesignfilt

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

Ejemplo: especifica un filtro FIR de 30 órdenes con una frecuencia de corte normalizada de 0,5 π Rad/sample.'Weighting',fir1(30,0.5)

Ejemplo: especifica un filtro Butterworth de tercer orden con una frecuencia normalizada de 3 dB de 0,5 π Rad/sample.'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,5 π Rad/sample.'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,5 π Rad/sample.'Weighting',designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5)

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

Argumentos de salida

contraer todo

Espectro de octava, 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 estima el espectro de octava. tiene unidades de Hertz.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