Verificación de clase de filtros (IEC 61260-1)
Normas aplicables: IEC 61260ANSI S1.11
Un banco de filtros solo se convierte en instrumento de medida cuando sus bandas se han demostrado frente a una especificación. IEC 61260-1:2014 escribe esa especificación como una máscara de aceptación: un corredor de atenuación relativa alrededor de cada frecuencia central, estrecho en la banda de paso y convertido en una exigencia de atenuación mínima lejos de la banda, con un corredor por cada clase de prestaciones. Un banco «es clase 1» cuando todas sus bandas se mantienen dentro del corredor de clase 1 en todas las frecuencias normalizadas, y el margen en decibelios dice por cuánto.
Esta página es la mitad de verificación del tema del filtrado en octavas: la máscara de 2014 y el veredicto por banda, los dos requisitos que la Parte 2 de la serie calcula a partir de la misma respuesta (el ancho de banda efectivo y la suma de las salidas adyacentes) y el ensayo de barrido del funcionamiento invariante en el tiempo, la clase 0 más estricta que mantienen vivas las máscaras retiradas de IEC 61260:1995 y ANSI S1.11-2004, una lectura de lo que aporta de verdad una clase en una medición (error en la banda de paso, fuga en la banda atenuada, balance de incertidumbre), los ensayos periódicos que un laboratorio le hace a un instrumento y cómo se califican sus resultados, y la ficha acreditada de una página que convierte el veredicto en documento. La mitad de diseño, las matemáticas de banda y la referencia de parámetros, es Bancos de filtros, y las cinco arquitecturas con sus respuestas comparadas son la Galería de arquitecturas de filtro; la misma maquinaria aplicada a las ponderaciones frecuenciales es la sección 6 de Ponderación frecuencial.
1. Verificar la clase frente a IEC 61260-1:2014
Sección titulada «1. Verificar la clase frente a IEC 61260-1:2014»verify_filter_class comprueba cada banda de un banco contra los límites de
aceptación de IEC 61260-1:2014 (Tabla 1, con el mapeo de los puntos de
quiebre a cada fracción de octava y la interpolación logarítmica de la norma)
y, para la edición de 2014, contra el ancho de banda efectivo y la suma de las
salidas tal como los calcula IEC 61260-2:2016 (apartado 1b). Informa de la
clase por banda con sus márgenes en dB:
from phonometry import filters
bank = filters.OctaveFilterBank(fs=48000, fraction=3, order=6)result = filters.verify_filter_class(bank)print(result.overall_class) # 1print(result.range_limited) # True: sus bandas altas llegan a Nyquistprint(result.requirements)# ('relative_attenuation', 'effective_bandwidth', 'summation')band = result.bands[0]print(band["freq"], band["class"], band["checked_to_omega"])# 12.589254117941678 1 1906.3877633382747print(band["margin_class1_db"], band["bandwidth_margin_class1_db"])# 0.39999977486865645 0.35126579320766144La banda de 1 kHz de un banco como el de arriba, a lo largo de la comprobación: su atenuación relativa en cada punto de quiebre de la Tabla 1, llevado a tercio de octava, frente a los límites de clase 1 y clase 2, y el menor margen decide la clase. La comprobación recorre cada banda hasta la mitad de la frecuencia de muestreo de entrada, 24 veces la frecuencia central de esta banda a 48 kHz, sobre la respuesta que la banda tiene a esa frecuencia, así que una banda diezmada se califica también sobre las imágenes que su diezmado pliega sobre ella. La caja de la derecha es lo que el apartado 1b calcula además sobre el diseño, los ensayos de IEC 61260-2 que no necesitan espécimen; la columna discontinua de debajo es lo que un laboratorio le hace a un instrumento, y el apartado 3b califica los resultados de ensayo periódico que devuelve.
Hasta dónde de la máscara llega realmente el veredicto.
checked_to_omega es la frecuencia normalizada más alta a la
que se evaluó esa banda: la mitad de la frecuencia de muestreo de entrada, la
frecuencia más alta que contiene una entrada muestreada, dividida por la
frecuencia central de la banda. Una banda que el banco diezma también se evalúa
hasta ahí, no solo hasta la frecuencia de Nyquist de su frecuencia diezmada
(véase más abajo). Todas las bandas del banco de arriba se evalúan por encima
del final de la máscara de la Tabla 1 (al menos 70 dB para la clase 1 desde
, la fila de octava llevada a tercio de octava)
salvo las de lo alto: desde 5 kHz, la frecuencia de Nyquist de 24 kHz queda
por debajo de , y la banda de 20 kHz solo se evalúa
hasta . Ahí el requisito de banda atenuada lejana no queda
demostrado sobre el filtro de banda en absoluto. Se da por satisfecho porque
una señal muestreada no lleva energía por encima de su frecuencia de Nyquist:
el filtro antialiasing de la cadena de captura la eliminó antes de que la banda
llegara a verla. range_limited es el indicador de que se ha usado ese
argumento, y aquí vale True.
Conviene decirlo tal cual en un informe: el veredicto acredita la máscara hasta
checked_to_omega, y el resto es un argumento sobre la cadena de captura. El
indicador solo se desactiva cuando la mitad de la frecuencia de muestreo de
entrada queda más allá del final de la máscara para cada banda. El banco de
tercios de octava del apartado 1b, de 125 Hz a 4 kHz a 48 kHz, no está
limitado en rango; el banco de octavas del mismo rango sí, porque sus bandas de
2 kHz y 4 kHz, filtradas a la frecuencia completa, solo se evalúan hasta
y 6, por debajo del donde termina la
máscara de octava. Cuando un documento exija la máscara completa sobre cada
filtro de banda, baja el techo del banco o sube fs: diseñar el banco con
design=filters.FilterDesign(resample=False) no cambia nada aquí, porque las
bandas que se quedan cortas ya corren a la frecuencia completa.
Una banda diezmada se califica sobre sus imágenes. Una banda que el banco
diezma por pasa su entrada por un paso bajo antialiasing, se queda con una
muestra de cada y filtra a , de modo que un tono en
sale de la banda en : la banda lee imágenes de sí
misma a lo largo de toda la banda de entrada. La IEC 61260-1:2014 5.15 pide a
los filtros antialiasing que esas imágenes queden dentro de los límites de la
Tabla 1, y la Tabla 1 cubre todas las frecuencias. La IEC 61260:1995 4.8 les
pide que la atenuación relativa no supere el mayor de los límites mínimos de la
Tabla 1, y el 5.7 lo ensaya con un tono en la frecuencia de muestreo diezmada
menos la frecuencia central; toda imagen de una banda diezmada cae más allá del
último punto de quiebre de la máscara, donde su mínimo es ese mayor. Así que la
comprobación lee cada banda a la frecuencia de entrada en las dos ediciones: el
filtro antialiasing en la frecuencia de entrada por las secciones de la banda
en la frecuencia sobre la que se pliega. Calificado así, el diezmador que
scipy.signal.resample_poly diseña por defecto, una ventana de Kaiser con
, dejaba la primera imagen del banco de octavas por defecto 68,9 dB
por debajo a 8, 16 y 32 kHz, sin llegar a los 70 dB de la clase 1, y las
imágenes de todos los demás bancos por defecto entre 70,9 dB y 73,1 dB por
debajo, sin llegar a los 75 dB de la clase 0 de la edición de 1995. Esas
imágenes de 68,9 dB quedan por encima de 1,5 veces la frecuencia central más
alta del banco, fuera del intervalo en el que la IEC 61260-2:2016 7.2.2.2 mide
la atenuación relativa, así que ese veredicto de clase 1 descansa en el 5.15 y
la Tabla 1 de la IEC 61260-1:2014 por sí mismos. Una comprobación que se
detenía en la frecuencia de Nyquist diezmada no veía nada de eso. El banco
diezma e interpola ahora con un filtro de la misma longitud cuya ventana de
Kaiser está dimensionada para una banda atenuada de 120 dB: sus imágenes quedan
al menos 125,4 dB por debajo de 8 kHz a 192 kHz, y su rizado dentro de
cualquier banda baja de dB a menos de dB. Los
tonos que pasan por el banco leen las imágenes calificadas con una diferencia
de 0,01 dB, a más de 120 dB por debajo.
from phonometry import filters
bank = filters.OctaveFilterBank(fs=16000, fraction=1, limits=[12, 5000])print([int(m) for m in bank.factor[:4]]) # [22, 11, 5, 2]: bandas diezmadasresult = filters.verify_filter_class(bank)print(result.requirement_class("relative_attenuation")) # 1band = result.bands[0]print(band["checked_to_omega"] * band["freq"])# 8000.0: la mitad de la frecuencia de entrada, no los 364 Hz de la diezmadaQué mide el margen. Es el mínimo, sobre todas las frecuencias normalizadas
en las que se evaluó la banda, de la distancia al límite más próximo de esa
clase: positivo cuando la respuesta se queda dentro del corredor en todas
partes, y negativo por exactamente la peor violación cuando no. La class que
se informa es la clase más estricta para la que ese margen y los márgenes del
apartado 1b no son negativos.
Conviene saber qué restricción manda antes de intentar mejorar el número. Un
Butterworth de planitud máxima es plano en el centro de banda, donde el corredor
de clase 1 es de ±0,4 dB, así que su margen satura en +0,400 dB en cuanto la
banda atenuada deja de ser el factor limitante: medido sobre un banco de tercios
de octava a 48 kHz, el orden 2 falla de plano (clase None, peor margen de
clase 1 de −27,03 dB) y los órdenes 4, 6, 8 y 10 mantienen todos exactamente
+0,400 dB en la Tabla 1 (el orden 4 pierde luego la clase 1 en la suma del
apartado 1b, y los órdenes 6 a 10 son clase 1 en todo). Subir el orden ayuda, por tanto, solo mientras el margen
es negativo por un motivo de banda atenuada; una vez que un diseño cumple, el
margen queda acotado por la semianchura del corredor de banda de paso y ningún
orden lo moverá. Un margen de +0,400 dB no es un resultado mediocre que haya que
mejorar: es lo mejor que puede informar un diseño conforme frente a esta
máscara.
La propia máscara de aceptación de la Tabla 1 también es pública:
class_limits(fraction, filter_class, omega) devuelve los límites
mínimo/máximo de atenuación relativa en frecuencias normalizadas
,
los mismos límites que usan el verificador y la figura de abajo.
La respuesta del Butterworth de orden 6 (azul) serpentea entre las regiones prohibidas: debe atenuar al menos la máscara roja fuera de la banda y no más que la morada dentro de ella.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom scipy.signal import sosfreqzfrom phonometry import filters
fs = 48000bank = filters.OctaveFilterBank(fs, fraction=1, order=6, limits=[800, 1200])idx = int(np.argmin(np.abs(np.array(bank.freq) - 1000)))fm, fsd = bank.freq[idx], fs / bank.factor[idx]w, h = sosfreqz(bank.sos[idx], worN=2**15, fs=fsd)att = -20 * np.log10(np.abs(h) + 1e-12)delta_a = att - np.interp(fm, w, att) # atenuación relativa
grid = np.logspace(np.log10(0.05), np.log10(8), 2000)lo1, hi1 = filters.class_limits(1.0, 1, grid) # atenuación mín/máx de clase 1
fig, ax = plt.subplots(figsize=(9, 5.5))ax.fill_between(grid, -10, lo1, alpha=0.15, color="tab:red", label="Prohibido: atenuación insuficiente")finite = np.isfinite(hi1)ax.fill_between(grid[finite], hi1[finite], 90, alpha=0.15, color="tab:purple", label="Prohibido: atenuación excesiva")ax.plot(w / fm, delta_a, label="Butterworth de orden 6")ax.set(xscale="log", xlim=(0.08, 8), ylim=(-6, 90), xlabel="Frecuencia normalizada f / fm", ylabel="Atenuación relativa [dB]")ax.legend()plt.show()Con parámetros por defecto (orden 6), Butterworth cumple la máscara de
clase 1 de la Tabla 1, y también
lo hace Chebyshev II: su valor por defecto de attenuation es ahora 72 dB,
superando el límite de clase 1 de 70 dB en la banda atenuada lejana (scipy fija
el suelo de rizado constante de cheby2 en exactamente attenuation, así que
cualquier valor cumple; el valor por defecto de 72 dB
mantiene el mismo margen de banda de paso de +0,400 dB que Butterworth).
Chebyshev I, elíptico y Bessel no cumplen
los límites de clase con orden 6: el rizado de banda de paso (cheby1/ellip) y la
caída lenta (bessel) violan la máscara. La clase 1 es el veredicto más estricto
que puede devolver esta edición; la clase 0, más estricta todavía, que el banco
por defecto también supera, pertenece a la máscara retirada de 1995 y es el
apartado 2. Que un banco entero sea clase 1 depende además de los dos requisitos
del apartado 1b, y los bancos de octavas y de tercios de octava por defecto
también cumplen ahí la clase 1.
1b. Ancho de banda efectivo y suma de las salidas (IEC 61260-2)
Sección titulada «1b. Ancho de banda efectivo y suma de las salidas (IEC 61260-2)»La Tabla 1 juzga una banda frecuencia a frecuencia. IEC 61260-1:2014 añade dos
requisitos que juzgan una banda, y un juego de bandas, como un todo, e
IEC 61260-2:2016 dice cómo los calcula un laboratorio de ensayo de tipo a partir
de la misma atenuación relativa. Ninguno necesita más que la respuesta
diseñada, así que para la edición de 2014 verify_filter_class califica los
dos, y la class de una banda es la clase más estricta que cumple en los tres.
Ancho de banda efectivo (5.12). Ante un sonido de banda ancha, un analizador de bandas informa de la potencia que deja pasar su banda, así que lo que cuenta es su anchura en potencia. El ancho de banda efectivo normalizado es la Fórmula (13) de IEC 61260-1,
y su desviación respecto al ancho de banda de una banda ideal, , es , dentro de ±0,4 dB para la clase 1 y ±0,6 dB para la clase 2 (5.12.2). Una banda con dB lee el ruido rosa 0,05 dB alto. El verificador evalúa la integral como recomienda el 7.2.3.2 de IEC 61260-2: la regla del trapecio de su Fórmula (2) sobre las frecuencias de ensayo de su Fórmula (1),
con de al menos 24 frecuencias por ancho de banda (points_per_bandwidth,
24 por defecto), llevada hasta el punto de quiebre más externo de la Tabla 1,
donde una banda de clase 1 está al menos 70 dB por debajo.
Suma de las señales de salida (5.16). Un tono entre dos frecuencias centrales tiene que salir del juego con su potencia, repartida entre las bandas que lo ven, sin perderla ni añadirla. La Fórmula (3) de IEC 61260-2 suma en energía la atenuación relativa de la banda y de sus dos vecinas en las frecuencias de ensayo de dentro de la banda ():
y el resultado tiene que quedar entre −1,8 dB y +0,8 dB para la clase 1, y entre
−3,8 dB y +1,8 dB para la clase 2. Las dos bandas de los extremos, con vecina a
un solo lado, quedan fuera (7.2.4.4), así que el requisito solo se califica en
un banco de tres bandas o más, y result.requirements dice si se calificó. La
Fórmula (3) impresa y el texto de 7.2.4.3 y de 5.16 toman la diferencia en
sentidos opuestos, lo que con unos límites tan asimétricos no es el mismo
ensayo; el verificador aplica los límites a la fórmula tal como está impresa,
como indica el 7.2.4.5, y el
registro de erratas recoge el conflicto.
from phonometry import filters
third = filters.verify_filter_class( filters.OctaveFilterBank(48000, fraction=3, order=6, limits=[125, 4000]))print(third.overall_class) # 1
octave = filters.verify_filter_class( filters.OctaveFilterBank(48000, fraction=1, order=6, limits=[125, 4000]))print(octave.requirement_class("relative_attenuation")) # 1print(octave.requirement_class("effective_bandwidth")) # 1print(octave.requirement_class("summation")) # 1print(round(octave.binding_margin_db("summation", 1), 2)) # 0.64print(octave.overall_class) # 1La Fórmula (3) de IEC 61260-2 en cada banda interior de los dos bancos por
defecto, dibujada por result.plot(requirement="summation"). Los dos bancos
devuelven la potencia de un tono con menos de 0,16 dB de diferencia: la suma se
queda a unas centésimas de decibelio de 0 dB en el centro de cada banda y sube
poco más de una décima de decibelio justo dentro de sus bordes, donde dos
bandas vecinas se reparten el tono.
Mostrar el código de esta figura
import matplotlib.pyplot as pltfrom phonometry import filters
octave = filters.verify_filter_class( filters.OctaveFilterBank(48000, fraction=1, order=6, limits=[125, 4000]))third = filters.verify_filter_class( filters.OctaveFilterBank(48000, fraction=3, order=6, limits=[125, 4000]))fig, (ax_oct, ax_third) = plt.subplots(1, 2, figsize=(13, 6.2), sharey=True)octave.plot(ax=ax_oct, requirement="summation", language="es")third.plot(ax=ax_third, requirement="summation", language="es")ax_oct.set_title("Banco de octava, diezmado: clase 1 en §5.16")ax_third.set_title("Banco de tercio de octava: clase 1 en §5.16")ax_third.set_ylabel("")plt.show()Por qué el banco diezma una banda solo hasta dieciséis veces su borde
superior. La suma es el requisito que un diseño multitasa pone en riesgo.
Cerca de su propia frecuencia de Nyquist, la transformada bilineal dobla una
banda: justo dentro de su borde superior de banda atenúa menos que la misma
banda diseñada lejos de Nyquist, y por encima de ese borde cae con más
pendiente. Justo por debajo de un borde superior de banda, la banda y su vecina
de arriba dejan pasar entonces más que la potencia del tono; justo por encima de
un borde inferior de banda, la vecina de abajo ya ha caído y se pierde
potencia. Un banco de octavas (Butterworth, orden 6, 48 kHz) diezmado hasta que
la frecuencia de Nyquist de procesado de cada banda es solo 1,25 veces su borde
superior de banda suma sus salidas adyacentes de −1,16 dB a +0,94 dB respecto a
la entrada: más allá de los +0,8 dB de la clase 1, un banco de clase 2. El
doblez se reduce con el cuadrado de esa razón: mueve la suma de una banda de
octava 0,074 dB con una razón de cuatro, 0,018 dB con ocho y 0,005 dB con
dieciséis, y la de una banda de tercio de octava 0,002 dB con dieciséis. Por
eso el banco deja de diezmar una banda mientras su frecuencia de Nyquist de
procesado sigue siendo al menos dieciséis veces su borde superior de banda, y
sus bancos diezmados suman lo mismo que los mismos bancos diseñados a la
frecuencia completa (design=filters.FilterDesign(resample=False)): clase 1 en
todos los requisitos a 44,1, 48 y 96 kHz. En todo su rango por defecto a
48 kHz, el banco de octavas suma de −0,06 dB a +0,69 dB, diezmado o no, con el
máximo en la banda de 8 kHz, vecina de la de 16 kHz, que corre a la frecuencia
completa cerca de la frecuencia de Nyquist de 24 kHz: clase 1 con 0,11 dB de
margen. El banco de tercios de octava suma de −0,25 dB a +0,76 dB, ambos en su
banda de 16 kHz, un margen de 0,04 dB, y el banco de octavas Chebyshev II
diezmado de −0,08 dB a +0,64 dB. Nada de esto es un artefacto de calificar
funciones de transferencia: tonos pasados por el propio banco, con sus filtros
de diezmado, leen las sumas de la Fórmula (3) con una diferencia de menos de
0,01 dB.
1c. Funcionamiento invariante en el tiempo (5.14)
Sección titulada «1c. Funcionamiento invariante en el tiempo (5.14)»Un banco multitasa no filtra un tono igual caiga donde caiga respecto al diezmado, y una función de transferencia no puede mostrarlo. El apartado 5.14 de IEC 61260-1:2014 lo ensaya en cambio sobre el filtro en marcha: una sinusoide de amplitud constante cuya frecuencia sube una década en 2 s a 5 s, y la salida promediada en el tiempo de cada banda tiene que quedar dentro de ±0,4 dB (clase 1) o ±0,6 dB (clase 2) del nivel de la Fórmula (17),
la salida de una banda ideal del mismo ancho de banda. swept_band_level es esa
fórmula (107,97 dB en el ejemplo que desarrolla el Anexo B de IEC 61260-2 y -3),
y swept_level_uncertainty su incertidumbre típica a partir de las
incertidumbres del barrido (Anexo A). verify_time_invariance ejecuta sobre un
banco el ensayo del 7.4 de IEC 61260-2: el barrido de las Fórmulas (A.3) y (A.4)
pasa por cada banda exactamente como OctaveFilterBank.filter procesa una
señal, diezmado polifásico incluido, a 2 s y a 5 s por década.
from phonometry import filters
bank = filters.OctaveFilterBank(48000, fraction=3, order=6, limits=[25, 10000])swept = filters.verify_time_invariance(bank)print(swept.overall_class) # 1print(round(swept.worst_deviation_db, 3)) # 0.056print(swept.seconds_per_decade) # (2.0, 5.0)print(round(filters.swept_band_level( 127.0, fraction=3, sweep_duration_s=30, averaging_time_s=30, start_frequency_hz=0.01, end_frequency_hz=1e6), 2)) # 107.97Todas las bandas del banco de tercios de octava diezmado leen unos +0,05 dB a las dos velocidades de barrido. Es su desviación del ancho de banda efectivo del apartado 1b, que es lo que el Anexo G de IEC 61260-1 dice que tiene que leer una banda que se comporta como su función de transferencia (G.2.8); un diezmado que replegara energía dentro de una banda leería más, y las dos velocidades se separarían.
Mostrar el código de esta figura
import matplotlib.pyplot as pltfrom phonometry import filters
bank = filters.OctaveFilterBank(48000, fraction=3, order=6, limits=[25, 10000])filters.verify_time_invariance(bank).plot(language="es")plt.show()2. Clase 0 (IEC 61260:1995 / ANSI S1.11-2004)
Sección titulada «2. Clase 0 (IEC 61260:1995 / ANSI S1.11-2004)»La clase de prestaciones más estricta, la clase 0, la definió la edición
anterior IEC 61260:1995 y su gemela estadounidense ANSI S1.11-2004
(ambas retiradas/sustituidas pero aún referenciadas para instrumentos de
laboratorio); IEC 61260-1:2014 la eliminó. Sus máscaras de clase 1/2 difieren
ligeramente de la edición de 2014, así que se selecciona con un conmutador edition en
lugar de mezclarse con la máscara de 2014:
from phonometry import filters
fs = 48000bank = filters.OctaveFilterBank(fs, fraction=1, order=6, limits=[800, 1200])
result = filters.verify_filter_class(bank, edition="1995") # clases 0, 1, 2print(result.overall_class) # 0 (el Butterworth por defecto la supera)print(result.bands[0]["margin_class0_db"])La edición de 1995 se califica en todos sus apartados sobre la función de
transferencia, no solo en la Tabla 1. Su respuesta integrada del filtro
(4.5) es el cociente que la edición de 2014 llama desviación del ancho de banda
efectivo, , construido a su
manera: la ecuación (14) integra sobre
sin el peso , por la regla del trapecio de la ecuación (16) sobre al
menos frecuencias de ensayo a cada lado (5.4.2), con subida desde los
24 pedidos en pasos de 12 hasta que la respuesta de todas las bandas se lee
igual a la décima de decibelio más cercana con y con (5.3.3; el
points_per_bandwidth del resultado dice dónde se detuvo, y la suma se recorre
también con ella), frente a la referencia
de la ecuación (9), y el 4.5.3 la
limita a ±0,15 dB, ±0,3 dB y ±0,5 dB para las clases 0, 1 y 2. Su suma de las
señales de salida (4.9) es la ecuación (19), una banda y sus dos vecinas
sumadas en energía, limitada a ±1,0 dB para la clase 0, +1,0 dB y −2,0 dB para
la clase 1 y +2,0 dB y −4,0 dB para la clase 2, y recorrida, como pide el
5.8.4, desde la frecuencia central más baja hasta la más alta: las bandas de
los extremos se leen en la mitad que mira al juego, donde la vecina que le
falta al juego no aporta nada. El banco Butterworth por defecto cumple la
clase 0 en los tres:
bank = filters.OctaveFilterBank(fs, fraction=1, order=6, limits=[125, 4000])result = filters.verify_filter_class(bank, edition="1995")print({r: result.requirement_class(r) for r in result.requirements})# {'relative_attenuation': 0, 'effective_bandwidth': 0, 'summation': 0}print(max(b["bandwidth_deviation_db"] for b in result.bands)) # unos +0,05 dBprint(result.points_per_bandwidth) # 36: el 5.3.3 subió S desde 24Dos defectos de la edición impresa están en el registro de erratas: la constante de normalización del 3.15 lleva un factor diez de más, y el texto del 4.9 y del 5.8.3 toma la diferencia de la suma en el sentido contrario a la ecuación (19), que la biblioteca sigue como indica el 5.8.5.
El corredor de clase 0 (±0,15 dB en el centro de banda) es el más estrecho; la clase 1 (±0,3 dB) y la clase 2 (±0,5 dB) son progresivamente más anchas. El Butterworth de orden 6 serpentea dentro de la clase 0 en toda la banda de paso.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom scipy.signal import sosfreqzfrom phonometry import filters
fs = 48000bank = filters.OctaveFilterBank(fs, fraction=1, order=6, limits=[800, 1200])idx = int(np.argmin(np.abs(np.array(bank.freq) - 1000)))fm, fsd = bank.freq[idx], fs / bank.factor[idx]w, h = sosfreqz(bank.sos[idx], worN=2**15, fs=fsd)att = -20 * np.log10(np.abs(h) + 1e-12)delta_a = att - np.interp(fm, w, att)
# Solo banda de paso: fuera de los bordes el límite máximo es +inf.g = 10 ** (3 / 10)grid = np.linspace(g ** -0.5, g ** 0.5, 1500)pb = (w / fm >= g ** -0.5) & (w / fm <= g ** 0.5)
fig, ax = plt.subplots(figsize=(9, 5.5))for cls in (2, 1, 0): # corredores anidados, clase 0 el más estrecho lo, hi = filters.class_limits(1.0, cls, grid, edition="1995") ax.plot(grid, hi, label=f"Corredor de clase {cls}") ax.plot(grid, lo, color=ax.lines[-1].get_color())ax.plot(w[pb] / fm, delta_a[pb], "k", lw=2, label="Butterworth de orden 6")ax.set(xscale="log", xlim=(g ** -0.5, g ** 0.5), ylim=(-0.7, 6), xlabel="Frecuencia normalizada f / fm", ylabel="Atenuación relativa [dB]")ax.legend()plt.show()3. Qué significa físicamente una clase
Sección titulada «3. Qué significa físicamente una clase»Las máscaras son cotas de error en el peor caso de una medición, no valoraciones abstractas:
-
En la banda de paso el corredor acota cuánto puede desviarse la lectura del contenido dentro de banda: un banco de clase 1 lee un tono de centro de banda a ±0,4 dB de su nivel verdadero y uno de clase 2 a ±0,6 dB (Tabla 1 de IEC 61260-1:2014; las máscaras de la Tabla 1 de IEC 61260:1995, más estrictas, permitían ±0,3 dB para la clase 1, ±0,5 dB para la clase 2 y ±0,15 dB para la clase 0). Hacia los bordes el corredor se ensancha, lo que es la admisión honesta de que un tono situado exactamente en un borde es genuinamente ambiguo entre dos bandas (ambas lo leen unos 3 dB por debajo).
-
En la banda atenuada la máscara de atenuación mínima acota la fuga del resto del espectro: lejos de la banda, la clase 1 exige al menos 70 dB de atenuación relativa (la razón por la que el valor por defecto de
cheby2es 72 dB). En términos de energía, un tono fuera de banda tiene que ser unos 70 dB más fuerte que el contenido propio de la banda para duplicar su lectura de energía (+3 dB). La consecuencia práctica: al medir bandas muy por debajo de un tono dominante, la lectura toca fondo en la falda de fuga unos 70 dB por debajo, y una arquitectura más abrupta (o mayor orden) es la única forma de empujar ese suelo más abajo.Cómo se ve la última frase convertida en medida. Toda banda cuyo nivel se apoya en la falda está informando del rechazo del filtro al tono de 1 kHz, no del sonido presente en esa banda: la línea de puntos es lo que hay realmente. La comprobación no tiene ningún misterio en cuanto la buscas: sube el orden y las bandas que están midiendo el filtro se mueven, mientras que las bandas que están midiendo el sonido no.
-
Para el balance de incertidumbre, la clase es la contribución del filtro a la incertidumbre de la medición: un banco de clase 1 añade hasta unas décimas de dB a un nivel de banda, comparable a los demás términos de tolerancia de un sonómetro de clase 1, y por eso las cadenas con calidad de instrumento especifican la clase de cada etapa en lugar de una única cifra global.
¿Qué arquitectura alcanza qué clase? Bajo la edición de 2014, cuyas únicas
clases son la 1 y la 2, los bancos Butterworth de orden 6 de octavas y de
tercios de octava por defecto de la biblioteca cumplen la clase 1 en todos
los requisitos, con un margen de +0,400 dB en la Tabla 1 (el techo, y el
apartado 1 explica por qué) y la suma del apartado 1b también dentro de la
clase 1. Frente a la máscara más estricta de 1995 / ANSI S1.11-2004
(edition="1995") ese mismo valor por defecto alcanza la clase 0; la
configuración que verifica la batería de conformidad a esa clase es el banco
de bandas de octava a 48 kHz, así que vuelve a ejecutar
verify_filter_class(bank, edition="1995") por tu cuenta antes de escribir
clase 0 en un documento para cualquier otra fracción o frecuencia de muestreo.
Escribir «clase 0 según IEC 61260-1:2014» es una afirmación contra una clase que
esa edición no define.
La tabla indica la mejor clase que alcanza cada arquitectura con orden 6 y fs 48 kHz bajo la máscara de 1995; las arquitecturas distintas de Butterworth se quedan por debajo porque cambian la máscara IEC por otra propiedad por construcción:
| Arquitectura | Mejor clase (orden 6, fs 48 kHz, edition="1995") | Por qué |
|---|---|---|
butter (por defecto) | 0 | Banda de paso máximamente plana, caída monótona; encaja en la máscara |
cheby2 | 1 | Banda de paso plana pero la relación de la máscara limita en clase 1 |
cheby1 | — | El rizado de banda de paso viola el límite de planitud |
ellip | — | Rizado en banda de paso y atenuada |
bessel | — | Retardo de grupo plano a costa de una caída lenta |
Bajo la edición de 2014 esa misma columna se lee 1, 1 y sin clase para las
otras tres: cheby2 se junta con Butterworth en lo más alto porque ya no existe
la clase 0 para separarlos. Es el banco de una sola banda de la figura de abajo;
un banco de varias bandas añade la suma del apartado 1b, y los bancos de
octavas Butterworth y Chebyshev II diezmados también cumplen en ella la
clase 1.
Los veredictos de la tabla, dibujados. Chebyshev I y el elíptico asoman por
encima del límite justo por dentro de los bordes de banda, donde vive su rizado;
Bessel se sale a lo largo de la falda, porque nunca cae lo bastante rápido. Las
muestras en rojo son las que verify_filter_class anotó en contra del diseño, y
esto es exactamente lo que dibuja verify_filter_class(bank).plot() para un
banco tuyo. Ojo a un detalle: la gráfica sombrea el corredor de la clase a la
que más se acercó cada diseño, así que los tres paneles que fallan muestran el
corredor de clase 2.
Mostrar el código de esta figura
import matplotlib.pyplot as plt
# `filters` es el import de los fragmentos anteriores.fs = 48000fig, axes = plt.subplots(2, 2, figsize=(12, 8))for ax, ftype in zip(axes.ravel(), ("butter", "cheby1", "ellip", "bessel")): bank = filters.OctaveFilterBank( fs, fraction=1, order=6, limits=[800, 1200], design=filters.FilterDesign(filter_type=ftype)) result = filters.verify_filter_class(bank) result.plot(ax=ax, language="es") ax.set_title(f"{ftype}: overall_class = {result.overall_class}")plt.tight_layout()plt.show()Así que el valor por defecto sensato es el habitual (Butterworth de orden 6),
mientras que las arquitecturas alternativas son opciones deliberadas cuyo
propósito (caída más abrupta, fase lineal) va en contra de la máscara de clase.
Fuera de estos ajustes (fraction muy alto o bandas cercanas a Nyquist), vuelve
a ejecutar verify_filter_class para confirmar la clase que necesitas.
3b. Verificar un instrumento, no un diseño
Sección titulada «3b. Verificar un instrumento, no un diseño»verify_filter_class responde a una pregunta sobre un diseño: si esta función
de transferencia cabe en la máscara. Un laboratorio responde a otra pregunta
distinta, sobre un equipo en una fecha, y los dos veredictos no son
intercambiables.
El recorrido completo de la Tabla 1 pertenece al ensayo de tipo (IEC 61260-2:2016), que un modelo de juego de filtros supera una sola vez, sobre especímenes, en un clima declarado y tras los ensayos de inmunidad. Lo que en él es aritmética sobre una respuesta, el ancho de banda efectivo, la suma y el ensayo de barrido, son los apartados 1b y 1c; el resto necesita el equipo. Lo que recibe de verdad un instrumento en servicio es el ensayo periódico de IEC 61260-3:2016, y es más estrecho a propósito: se mide la atenuación relativa en la frecuencia central exacta de cada filtro del juego, por la entrada eléctrica y en el rango de nivel de referencia, o bien, si los filtros son invariantes en el tiempo, la desviación del ancho de banda efectivo obtenida con un único barrido exponencial sobre todo el juego; la atenuación relativa de tres filtros escogidos, uno bajo, uno medio y uno alto, en las frecuencias normalizadas del apartado 13 ( de a , hasta donde alcance el rango de frecuencias del juego); el rango lineal de funcionamiento con su control de rango de nivel y su comportamiento ante sobrecarga; y el límite inferior de ese rango, todo bajo condiciones ambientales declaradas y con equipos de ensayo trazables. Por eso un certificado lleva una fecha, una temperatura y una lista de números de serie, y por eso no dice nada de las partes de la máscara que no recorrió.
Lo que sí se hereda merece constar en un informe: el veredicto de clase de esta página lo heredan todas las medidas hechas con los filtros de la biblioteca, y una cadena de hardware añade un veredicto propio. Nombra los dos. El régimen equivalente para los sonómetros (los ensayos periódicos de IEC 61672-3, y la IEC 60942 para el calibrador) está en Ensayos periódicos de un sonómetro y Calibración y dBFS.
Calificar un ensayo periódico. Los ensayos los hace el laboratorio; el
veredicto sobre lo que midió es aritmética, y lo hace verify_filter_periodic.
Cada resultado entra con la incertidumbre expandida del laboratorio, y cada uno
se juzga con la regla de conformidad del IEC TC 29
(metrology.verify_conformance): la desviación dentro de sus límites de
aceptación y la incertidumbre dentro del máximo que el Anexo B de
IEC 61260-1:2014 permite para ese ensayo. Apartado por apartado:
| Apartado | Qué midió el laboratorio | Límites de aceptación | máxima (Anexo B) |
|---|---|---|---|
| 10.2 | atenuación relativa de cada filtro en su frecuencia central exacta | ±0,4 dB clase 1, ±0,6 dB clase 2 | 0,20 dB, o 0,30 dB pasada una de 2 dB |
| 10.3 | o, filtros invariantes en el tiempo, con un único barrido | ±0,4 dB clase 1, ±0,6 dB clase 2 | 0,20 dB |
| 11.7 | linealidad de nivel en el rango de referencia | ±0,5 dB clase 1, ±0,6 dB clase 2 hasta 40 dB por debajo del límite superior; ±0,7 dB y ±0,9 dB más allá | 0,20 dB hasta 40 dB, 0,35 dB más allá |
| 11.9 | linealidad de nivel en cada otro rango, 30 dB por debajo de su límite superior | como 11.7 | como 11.7 |
| 13 | atenuación relativa de tres filtros en hasta 15 | Tabla 1 de IEC 61260-3 | 0,20, 0,30 o 0,50 dB según llegue a 2 dB, a 40 dB o más |
Las quince frecuencias del apartado 13 salen de las Fórmulas (1) y (2) de
IEC 61260-3 para cualquier designador de ancho de banda,
periodic_test_frequencies(b), y su Tabla 1 es
PERIODIC_TEST_ATTENUATION_LIMITS_DB, con las filas de banda atenuada sin
máximo. Un laboratorio deja fuera las frecuencias que caen fuera del rango del
juego (13.4) escribiendo NaN en su lugar.
from phonometry import filters
omega = filters.periodic_test_frequencies(3)print(round(float(omega[8]), 5)) # 1.02667, Tabla C.1print(filters.PERIODIC_TEST_ATTENUATION_LIMITS_DB[1][7]) # (70.0, inf)
row = [76.0, 63.0, 45.0, 20.0, 0.8, 0.3, 0.1, 0.0, 0.1, 0.2, 0.7, 19.0, 44.0, 63.0, 77.0]row_u = [0.4, 0.4, 0.4, 0.25, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.25, 0.4, 0.4, 0.4]record = filters.FilterPeriodicMeasurements( midband_attenuations_db=[0.12, -0.05, 0.08, 0.02, -0.1, 0.15], midband_uncertainties_db=[0.15] * 6, linearity_deviations_db=[0.0, 0.1, 0.2, -0.3, 0.4], linearity_levels_below_upper_db=[0.0, 10.0, 20.0, 45.0, 55.0], linearity_uncertainties_db=[0.12, 0.12, 0.25, 0.2, 0.3], relative_attenuations_db=[row, [x + 0.2 for x in row], row], relative_attenuation_uncertainties_db=[row_u, row_u, row_u],)verdict = filters.verify_filter_periodic(1, record, fraction=3)print(verdict.passes) # Falseprint(verdict.unusable) # (('11.7', '20 dB below the upper boundary'),)print(verdict.failed) # ()Todas las desviaciones de ese registro están dentro de sus límites, y el
veredicto sigue sin ser un aprobado: una lectura de linealidad se tomó con
0,25 dB de incertidumbre expandida donde el Anexo B admite 0,20 dB, y el 5.3 de
IEC 61260-3 prohíbe usarla. verdict.statement lo dice con las palabras de la
norma, y en cuanto todos los resultados son utilizables pasa a ser la
declaración que prescribe el Capítulo 14: la 14 k) cuando la aprobación de
modelo es pública (pattern_approval_public=True), la 14 l) si no, con la
salvedad del 1.5 de que de los ensayos periódicos solos no se sigue ninguna
conclusión general sobre IEC 61260-1.
Un aprobado también exige que los ensayos cubran lo que la norma les pide: el
11.3 y el 13.1 miden tres filtros, y el 13.4 mide cada uno en todas las
frecuencias de ensayo por encima de 0,5 veces la frecuencia central más baja
del juego y por debajo de 1,5 veces la más alta. Con las frecuencias centrales
del juego (set_midband_frequencies_hz), de los tres filtros ensayados
(tested_midband_frequencies_hz) y del filtro de cada resultado de linealidad
(linearity_midband_frequencies_hz), el veredicto los cuenta, y
verdict.incomplete enumera cada carencia, incluido un NaN donde el 13.4 pide
una medida; retiene el aprobado igual que un apartado sin medir. Un registro
sin ellas no se puede comprobar en cobertura: verdict.coverage_checked es
False, y una declaración de aprobado termina diciendo que la cobertura no se
comprobó. Una atenuación de centro de banda del 10.2 toma su máximo del
Anexo B de lo que se midió, como hace el apartado 13: un filtro que se ha
desviado más de 2 dB en su frecuencia central admite 0,30 dB, y por eso no
supera el ensayo en lugar de quedar no utilizable.
verdict.plot(): el margen de cada resultado a su límite más próximo con su
incertidumbre expandida, apartado por apartado. El círculo hueco es el único
resultado que el 5.3 deja inutilizable, y él solo frena el veredicto.
Mostrar el código de esta figura
import matplotlib.pyplot as plt
# `verdict` es el resultado del fragmento anterior.verdict.plot(language="es")plt.show()Lo que el calificador periódico deja al informe del laboratorio: el ruido propio del Capítulo 12, para el que el Anexo B no fija incertidumbre máxima, la indicación de sobrecarga de 11.5 y 11.8, y las observaciones de los Capítulos 4 y 6 a 8 (inspección previa, condiciones ambientales, el manual) no se califican; anótalas junto al veredicto.
4. La ficha de conformidad (.report())
Sección titulada «4. La ficha de conformidad (.report())»verify_filter_class(bank) devuelve un objeto de resultado que expone
.plot() y .report(), de modo que el veredicto del ensayo de tipo puede
renderizarse como una ficha acreditada de una página. La
ficha lista la clase alcanzada por cada banda y su margen vinculante sobre todos
los requisitos calificados, tabula los requisitos de los apartados 1 y 1b con
la clase, el margen vinculante y el intervalo de cada uno, superpone
la atenuación relativa medida de la banda de peor margen sobre el corredor de la
clase y encuadra el resultado global de conformidad. Pasa un required_class en
el ReportMetadata para añadir una fila de veredicto CUMPLE/NO CUMPLE (un banco
«cumple la clase N» cuando su clase alcanzada es al menos igual de estricta, es
decir, un índice de clase N o inferior). La ficha se genera en inglés por
defecto; pasa language="es" para una ficha en español (cadenas fijas
traducidas y coma como separador decimal), p. ej.
result.report("iec61260_es.pdf", language="es").
El ejemplo es el banco de octavas diezmado de 125 Hz a 4 kHz, la configuración que el apartado 1b muestra como clase 1 en todos los requisitos:
from phonometry import ReportMetadata, filters
bank = filters.OctaveFilterBank(fs=48000, fraction=1, order=6, limits=[125, 4000])result = filters.verify_filter_class(bank) # overall_class == 1result.plot(language="es") # la banda de peor margen sobre su corredor de clase
result.report( "iec61260.pdf", metadata=ReportMetadata( specimen="Banco de filtros de octava (1/1)", measurement_standard="IEC 61260-1:2014", required_class=1, # se exige clase 1 (o más estricta) ),) # -> Class 1 - COMPLIES, PASSLa ficha de ejemplo se regenera con make reports y se mantiene renderizada en
el repositorio; pulsa la vista previa para abrir el PDF.

Ficha de conformidad de clase de filtro de una página: una cabecera de metadatos, una tabla de clasificación por bandas con la clase alcanzada y el margen vinculante de cada banda de octava, la atenuación relativa medida de la banda de peor margen superpuesta sobre el corredor de aceptación verde de clase 1 con los tres requisitos calificados debajo, el resultado encuadrado Class 1 - COMPLIES y un veredicto CUMPLE frente a la clase 1 exigida.
Pasar edition="1995" verifica contra la máscara más antigua de IEC 61260:1995 /
ANSI S1.11-2004, que conserva la clase 0 más estricta que la edición de 2014
eliminó, junto con la respuesta integrada del filtro del 4.5.3 y la suma del
4.9, de modo que un banco de orden 6 puede certificarse a clase 0 en los tres,
y la ficha recoge cada uno bajo su apartado de 1995:
bank = filters.OctaveFilterBank(fs=48000, fraction=1, order=6, limits=[250, 4000])result = filters.verify_filter_class(bank, edition="1995") # overall_class == 0result.plot(language="es") # el corredor de clase 0 de la edición de 1995result.report("iec61260_1995.pdf", metadata=ReportMetadata(measurement_standard="IEC 61260:1995", required_class=0)) # -> Class 0 - COMPLIES
Ficha de conformidad de clase de filtro de una página bajo la edición de 1995: una tabla de clasificación por bandas con cada banda de octava alcanzando la clase 0, la atenuación relativa medida superpuesta sobre el corredor de aceptación verde de clase 0 con los tres requisitos de la edición de 1995 calificados debajo, el resultado encuadrado Class 0 - COMPLIES (margin +0.10 dB) y un veredicto CUMPLE frente a la clase 0 exigida.
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto
Los límites de aceptación de clase 1 y clase 2 de la Tabla 1 de IEC 61260-1:2014 (con el mapeo de los puntos de quiebre a cada fracción de octava y la interpolación logarítmica de la norma), comprobados banda a banda por
verify_filter_classy publicados como máscara porclass_limits; la desviación del ancho de banda efectivo (5.12) y la suma de las señales de salida (5.16), calificadas por la misma llamada tal como las calcula IEC 61260-2:2016 (Fórmulas (1) a (3)); el ensayo de barrido del funcionamiento invariante en el tiempo (5.14, 7.4 de IEC 61260-2) ejecutado sobre el banco porverify_time_invariance, con la Fórmula (17) y su incertidumbre del Anexo A; la máscara de clase 0 de la edición retirada IEC 61260:1995 / ANSI S1.11-2004, accesible conedition="1995", con la respuesta integrada del filtro (4.5.3) y la suma de las señales de salida (4.9) de esa edición; cada banda calificada a la frecuencia de entrada del banco hasta su mitad, con las imágenes que lee una banda diezmada (IEC 61260-1:2014 5.15, IEC 61260:1995 4.8); la calificación apartado por apartado de los resultados de ensayo periódico IEC 61260-3:2016 de un laboratorio converify_filter_periodic, con sus frecuencias de ensayo, su Tabla 1 y la declaración del Capítulo 14; y la ficha acreditada de una página deverify_filter_class().report(), con su veredicto opcional CUMPLE/NO CUMPLE frente arequired_class, en inglés y en español.No cubierto
Los propios ensayos sobre un filtro físico: los especímenes y los ensayos de clima, inmunidad, sobrecarga y linealidad de IEC 61260-2 y las mediciones de IEC 61260-3 los hace un laboratorio, y
verify_filter_periodiccalifica los números que devuelve sin producirlos. De ellos, el ruido propio del Capítulo 12 de IEC 61260-3 y las indicaciones de sobrecarga de 11.5 y 11.8 no se califican, ni, en la edición de 1995, los requisitos que responde un instrumento físico (linealidad, funcionamiento en tiempo real, entorno). Cerca de Nyquist la transformada bilineal deforma el eje de frecuencia y el banco no lo corrige, y por encima de la mitad de la frecuencia de entrada un banco digital no tiene frecuencia a la que responder, así que la máscara de banda atenuada más allá se informa comorange_limiteden lugar de verificarse: mantén el borde de banda superior holgadamente por debajo de Nyquist o subefs.
Respuestas rápidas
Sección titulada «Respuestas rápidas»¿Qué arquitectura de filtro cumple la clase 1 de IEC 61260-1 con los ajustes por defecto?
Sección titulada «¿Qué arquitectura de filtro cumple la clase 1 de IEC 61260-1 con los ajustes por defecto?»Con el orden 6 por defecto, Butterworth cumple la clase 1 de los límites de
aceptación de la Tabla 1 de IEC 61260-1:2014, y también Chebyshev II: su
attenuation por defecto de 72 dB supera el límite de clase 1 de 70 dB en
la banda atenuada lejana. Chebyshev I, elíptico y Bessel no la cumplen: el rizado
de banda de paso (cheby1, ellip) y la caída lenta (bessel) violan la
máscara. verify_filter_class informa de la clase alcanzada por banda, en la
Tabla 1 y también en los requisitos de ancho de banda efectivo y de suma.
¿Es clase 1 el banco de octavas por defecto según IEC 61260-1:2014?
Sección titulada «¿Es clase 1 el banco de octavas por defecto según IEC 61260-1:2014?»Sí, en todos los requisitos que se le califican: la máscara de la Tabla 1, el
ancho de banda efectivo (5.12) y la suma de las señales de salida (5.16). El
banco Butterworth de octavas diezmado suma las salidas adyacentes entre
−0,06 dB y +0,69 dB respecto a la entrada en su rango por defecto a 48 kHz,
dentro de los −1,8 dB y +0,8 dB de la clase 1 con 0,11 dB de margen, igual que
el mismo banco diseñado a la frecuencia completa con
FilterDesign(resample=False): el banco diezma una banda solo hasta donde su
frecuencia de Nyquist de procesado sigue siendo al menos dieciséis veces su
borde superior de banda, y ahí el diezmado mueve la suma como mucho 0,005 dB.
El banco de tercios de octava también es clase 1 en todos los requisitos, con
0,04 dB de margen en la suma.
¿Qué es la clase 0 y qué norma la define?
Sección titulada «¿Qué es la clase 0 y qué norma la define?»La clase 0 es la clase de prestaciones más estricta, definida por IEC
61260:1995 y su gemela estadounidense ANSI S1.11-2004 y eliminada por IEC
61260-1:2014. Su corredor de banda de paso admite solo ±0,15 dB en el
centro de banda, frente a ±0,3 dB para la clase 1 en las máscaras de 1995.
Sigue accesible con edition="1995", y el banco Butterworth de orden 6 por
defecto cumple la clase 0 en las configuraciones que verifica el informe de
conformidad, los bancos de octava y de tercio de octava a 48 kHz, en la
Tabla 1, en la respuesta integrada del filtro del 4.5.3 y en la suma del 4.9,
con sus imágenes calificadas también. Bajo IEC 61260-1:2014 ese
mismo banco es clase 1, en la máscara de la Tabla 1 y en el ancho de banda
efectivo y la suma del 5.12 y el 5.16: la edición de 2014 no define ninguna
clase 0, así que una afirmación de clase 0 tiene que citar la máscara de
1995 / ANSI S1.11-2004 frente a la que se midió.
Referencias
Sección titulada «Referencias»- American National Standards Institute. (2004). Specification for octave-band and fractional-octave-band analog and digital filters (ANSI S1.11-2004). Acoustical Society of America. Sus límites de clase de la Tabla 1 son idénticos a los de IEC 61260:1995 y respaldan la misma máscara de clase 0.
- International Electrotechnical Commission. (1995). Electroacoustics — Octave-band and fractional-octave-band filters (IEC 61260:1995). La primera edición retirada cuya Tabla 1 aporta la máscara de clase 0 más estricta que ofrece edition='1995'.
- International Electrotechnical Commission. (2014). Electroacoustics — Octave-band and fractional-octave-band filters — Part 1: Specifications (IEC 61260-1:2014). Los límites de aceptación de clase 1 y clase 2 de la Tabla 1 verificados aquí, con el mapeo de los puntos de quiebre a cada fracción de octava y la interpolación logarítmica de la norma.
- International Electrotechnical Commission. (2016). Electroacoustics — Octave-band and fractional-octave-band filters — Part 2: Pattern-evaluation tests (IEC 61260-2:2016). El régimen de ensayo de tipo que un modelo de juego de filtros supera una sola vez. Sus Fórmulas (1) a (3), las frecuencias de ensayo, el ancho de banda efectivo por trapecios y la suma de las salidas adyacentes, son como verify_filter_class califica los apartados 5.12 y 5.16 de la Parte 1; su ensayo de barrido de 7.4, con los Anexos A y B, es verify_time_invariance, swept_band_level y swept_level_uncertainty. Los especímenes y los ensayos de clima, inmunidad y linealidad necesitan un equipo físico.
- International Electrotechnical Commission. (2016). Electroacoustics — Octave-band and fractional-octave-band filters — Part 3: Periodic tests (IEC 61260-3:2016). Los ensayos periódicos que recibe un analizador en servicio: atenuación relativa en el centro de banda de todos los filtros o, si son invariantes en el tiempo, desviación del ancho de banda efectivo con un barrido sobre todo el juego; atenuación relativa de tres filtros escogidos en las frecuencias del apartado 13; rango lineal de funcionamiento y su límite inferior, bajo condiciones ambientales declaradas. verify_filter_periodic califica frente a ellos los resultados de un laboratorio, con las Fórmulas (1) y (2) de periodic_test_frequencies y la Tabla 1 de PERIODIC_TEST_ATTENUATION_LIMITS_DB.