文档

倍频带和分数倍频带滤波器

这个例子展示了如何设计倍频带和分数倍频带滤波器。倍频带和分数倍频带滤波器是声学中常用的滤波器。例如,用八度滤波器来进行噪声控制的光谱分析。声学家更喜欢使用八度或分数(通常是1/3)八度滤波器组,因为它提供了不同频段噪声功率的有意义的度量。

全倍频带和1/3倍频带滤波器组的设计

八度音程是两个频率之间的间隔,其比率为2:1。倍频带或分数倍频带滤波器是由其中心频率和阶数决定的带通滤波器。ANSI®S1.11-2004标准为三类滤波器定义了量级衰减极限:0类、1类和2类。类0只允许通带中+/-0.15 dB的波纹,而类1滤波器允许+/-0.3 dB,类2滤波器允许+/-0.5 dB。阻带衰减的等级从60到75分贝不等,这取决于滤波器的级别。

设计了一个初始的全倍频带滤波器octaveFilter系统对象。这个过滤器是创建过滤器组的起点。

BW =1倍频程的;N = 6;%过滤顺序F0 = 1000;中心频率(Hz)Fs = 48000;采样频率(Hz)oneOctaveFilter = octaveFilter(“FilterOrder”N...“CenterFrequency”F0,“带宽”BW,“SampleRate”Fs)
oneOctaveFilter = octaveFilter的属性:FilterOrder: 6 CenterFrequency: 1000 Bandwidth: '1 octave'过采样:false SampleRate: 48000

获取ANSI S1.11-2004标准定义的音频范围内(20 Hz到20 kHz)的所有中心频率来设计滤波器组:

F0 = getANSICenterFrequencies(oneOctaveFilter);F0(F0<20) = [];F0(F0>20e3) = [];Nfc =长度(F0);i=1:Nfc fullOctaveFilterBank{i} = octaveFilter(“FilterOrder”N...“CenterFrequency”F0(我),“带宽”BW,“SampleRate”Fs);% #好吧结束

现在设计一个1/3倍频带滤波器组。将每个过滤器的顺序增加到8:

BW =1/3倍频程的;N = 8;F0 = 1000;oneThirdOctaveFilter = octaveFilter(“FilterOrder”N...“CenterFrequency”F0,“带宽”BW,“SampleRate”Fs);F0 = getANSICenterFrequencies(oneThirdOctaveFilter);F0(F0<20) = [];F0(F0>20e3) = [];Nfc =长度(F0);i=1:Nfc oneThirdOctaveFilterBank{i} = octaveFilter(“FilterOrder”N...“CenterFrequency”F0(我),“带宽”BW,“SampleRate”Fs);% #好吧结束

可视化两个滤波器组中每个滤波器的幅度响应。1/3倍频滤波器组提供了更精细的光谱分析,但成本增加。它需要30个滤波器,而完整的八度频域滤波器组需要10个来覆盖音频范围[20 20000 Hz]。

可视化(fullOctaveFilterBank {6},“1级”);可视化(oneThirdOctaveFilterBank {6},“1级”);

可视化器图与对象同步,因此您可以在更改过滤器参数时看到幅度响应的更新。如果符合ANSI S1.11-2004标准,震级响应周围的掩码将为绿色,否则为红色。你也可以使用audioTestBench工具,快速设置测试台以使用您所设计的倍频滤波器。例如,运行audioTestBench (fullOctaveFilterBank {6})用滤波器组中的一个全八度滤波器启动测试台架。

白噪声的光谱分析

人的耳朵在一个更接近对数刻度的刻度上解释声音的响度,而不是线性刻度,但基于dft的频率分析导致线性频率刻度。使用频谱分析仪计算白噪声信号的(基于dft的)功率谱:

Nx = 100000;Scope1 = dsp。简介(“SpectralAverages”, 50岁,“SampleRate”Fs,...“PlotAsTwoSidedSpectrum”假的,“FrequencyScale”“日志”...“YLimits”, [-80 20]);抽搐Toc < 15运行15秒xw = randn(Nx,1);scope1 (xw);结束

用1/3倍频滤波器组对白噪声信号进行滤波,并计算每个滤波器输出处的平均功率。虽然白噪声信号的功率谱是平坦的,但高频被认为更响亮。1/3八度谱描绘了一幅更接近人耳感知的画面。它显示了一个频谱,其中功率水平每八度上升3分贝,因为每个波段(即滤波器)的频率范围是前一个八度波段的两倍。

Scope2 = dsp。简介(“SpectralAverages”, 50岁,“SampleRate”Fs,...“PlotAsTwoSidedSpectrum”假的,“FrequencyScale”“日志”...“RBWSource”“属性”“RBW”, 2000);yw = 0 (Nx,Nfc);抽搐Toc < 15运行15秒xw = randn(Nx,1);i=1:Nfc oneThirdOctaveFilter = oneThirdOctaveFilterBank{i};yw(:,i) = oneThirdOctaveFilter(xw);结束scope2 (yw);结束

粉色噪声的光谱分析

白噪声信号在所有频率上具有相同的功率分布,而粉色噪声信号在每个八度上具有相同的功率分布,因此0.5 Hz到1hz之间的功率与5000 Hz到10,000 Hz之间的功率相同。

pinkNoise = dsp。ColoredNoise (“颜色”“粉红色”...“SamplesPerFrame”Nx,...“NumChannels”1);Scope3 = dsp。简介(“SpectralAverages”, 50岁,“SampleRate”Fs,...“PlotAsTwoSidedSpectrum”假的,“FrequencyScale”“日志”...“YLimits”, [-80 20]);抽搐,Toc < 15运行15秒x = pinkNoise();scope3 (x);结束

现在用1/3倍频滤波器组对粉色噪声信号进行滤波,并计算每个滤波器输出处的平均功率。粉色噪声信号的功率在较高频率下以每八度约-3分贝的速率下降。然而,它听起来是“恒定的”,1/3倍频带的频谱在滤波器组的输出处显示为平坦。

Scope4 = dsp。简介(“SpectralAverages”, 50岁,“SampleRate”Fs,...“PlotAsTwoSidedSpectrum”假的,“FrequencyScale”“日志”...“RBWSource”“属性”“RBW”, 2000);yp = 0 (Nx,Nfc);抽搐,Toc < 15运行15秒xp = pinkNoise();i=1:Nfc oneThirdOctaveFilter = oneThirdOctaveFilterBank{i};yp(:,i) = oneThirdOctaveFilter(xp);结束scope4 (yp);结束