文档

octaveFilterBank

八度和分数八度滤波器组

描述

octaveFilterBank将信号分解为八度或分数八度子带。八度频带是最高频率是最低频率的两倍的频带。倍频带和分数倍频带滤波器通常用于模拟人类如何感知音量。

应用一组倍频带或分数倍频带滤波器:

  1. 创建octaveFilterBank对象并设置其属性。

  2. 调用带有参数的对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?(MATLAB)。

创建

描述

octFiltBank= octaveFilterBank返回一个八度滤波器组。这些对象随着时间的推移在每个输入通道上独立筛选数据。

octFiltBank= octaveFilterBank (带宽设置带宽财产带宽

octFiltBank= octaveFilterBank (带宽fs设置SampleRate财产fs

octFiltBank= octaveFilterBank (___名称,值设置每个属性的名字到指定的价值.未指定的属性有默认值。

例子:octFiltBank = octaveFilterBank('1/2 octave','FrequencyRange',[62.5,12000])创建一个½倍频带滤波器组,octFiltBank,带通滤波器设置在62.5 Hz至12,000 Hz之间。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放函数解锁它们。

如果属性是可调,您可以随时更改其值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统(MATLAB)。

以八度为单位的过滤带宽,指定为1倍频程的“2/3倍频程”的1/2倍频程1/3倍频程的“1/6倍频程”“1/12倍频程”“1/24倍频程”,或“1/48倍频程”

可调:没有

数据类型:字符|字符串

以Hz为单位的输入采样速率,指定为正标量。

可调:是的

数据类型:|

滤波器组的频率范围,以Hz为单位,指定为单调递增值的双元素行向量。滤波器组中心频率是根据带宽RefererenceFrequency,OctaveRatioBase属性。有外部中心频率的滤波器FrequencyRange将被忽略。

可调:没有

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

滤波器组的参考频率(以Hz为单位),指定为正整数标量。参考频率定义了一个中心频率。所有其他中心频率都是相对于参考频率设置的。

可调:没有

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

八度倍数过滤器的顺序,指定为偶数。过滤器顺序适用于过滤器组中的每个单独过滤器。

可调:没有

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

八度比基数,指定为102.八度比基数决定了八度滤波器中心频率的分布。ANSI S1.11标准推荐以10为基数。Base 2在音乐应用程序中很流行。以2为基数定义一个八度是2的因数,以10为基数定义一个八度是10的因数0.3

可调:没有

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

使用

描述

例子

audioOut= octFiltBank (audioIn在输入上应用八度滤波器组并返回过滤后的输出。

输入参数

全部展开

音阶滤波器组的音频输入,指定为标量、矢量或矩阵。如果指定为矩阵,列将被视为独立的音频通道。

数据类型:|

输出参数

全部展开

音阶滤波器组的音频输出,作为标量、向量、矩阵或3-D数组返回。的形状audioOut取决于形状audioIn和滤波器组中滤波器的数量。如果是过滤器的数量,和audioIn是一个l——- - - - - -N矩阵,然后audioOut返回为l——- - - - - -——- - - - - -N数组中。如果N是1,那么audioOut是一个矩阵。

数据类型:|

对象的功能

要使用对象函数,请将System对象™指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

多项式系数 获取滤波系数
freqz 计算频率响应
fvtool 可视化滤波器组
getBandedgeFrequencies 获取过滤带
getCenterFrequencies 滤波器中心频率
getGroupDelays 获得群组延迟
信息 获取筛选器信息
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置系统对象的内部状态

例子

全部展开

为在48 kHz采样的信号创建1/3倍频滤波器组。设置频率范围为(22000年18)赫兹。

octFilBank = octaveFilterBank(1/3倍频程的, 48000,...“FrequencyRange”[22000] 18日);

使用fvtool将滤波器组的响应可视化。若要获得较低频率的高分辨率视图,请设置比例x设在来日志而且NFFT2 ^ 16.添加图例说明滤波器组中心频率。

fvtool (octFilBank“NFFT”、2 ^ 16);集(gca),“XScale”“日志”)轴((。01 24 -20 1]) fc = getCenterFrequencies(octFilBank);FCC =电池(尺寸(fc));Ii = find(fc<1000) fcc{Ii} = sprintf(“% .0f”而圆(fc (ii) 2“重要的”));结束Ii = find(fc>=1000) fcc{Ii} = sprintf(“% .1fk”、fc (ii) / 1000);结束传奇(fcc,“位置”“eastoutside”

处理高斯白噪声通过滤波器组。使用频谱分析仪查看滤波器输出的频谱。

Sa = dsp。简介(“SampleRate”16 e3,...“PlotAsTwoSidedSpectrum”假的,...“FrequencyScale”“日志”...“SpectralAverages”, 100);指数= 1:500 x = randn(256,1);y = octFilBank(x);sa (y);结束

octaveFilterBank在分析或修改其子带后,能够很好地重建信号。

读一个音频文件并听它的内容。

[audioIn,fs] = audioread(“randomoscthree - 24 - 96立体声- 13 - secs.aif”);声音(audioIn fs)

创建一个默认值octaveFilterBank.滤波器组的默认频率范围是22 ~ 2250hz。在这个范围之外的频率在重构信号中被衰减。

octFiltBank = octaveFilterBank(“SampleRate”fs);

把音频信号通过八度滤波器组。输出的数量取决于FrequencyRangeReferenceFrequencyOctaveRatioBase,带宽八度滤波器组的属性。输入的每个通道都独立地通过一个过滤器组,并在输出中作为单独的页面返回。

audioOut = octFiltBank(audioIn);[N,numFilters,numChannels] = size(audioOut)
N = 1265935
numFilters = 10
numChannels = 2

八度滤波器组引入了各种组延迟。为了补偿组延迟,从单个滤波器输出中删除开始延迟,并对信号的末端进行零填充,以便它们都是相同的大小。使用getGroupDelays要得到群延迟。听群延时补偿重建。

groupDelay = round(getgroupdelayed (octFiltBank));为简单起见,%圆audioPadded = [audioOut;zeros(max(groupDelay),numFilters,numChannels)];i = 1:numFilters audioOut(:,i,:) = audioPadded(groupDelay(i)+1:N+groupDelay(i),i,:);结束

为了重建原始信号,将每个通道的滤波器组的输出相加。使用挤压将重构信号中的第二通道从第三维移动到第二维。

reconstructedSignal = squeeze(sum(audioOut,2));声音(reconstructedSignal fs)

算法

octaveFilterBank实现为一个平行结构的八度滤波器。单个倍频滤波器的设计如所描述的octaveFilter.默认情况下,倍频滤波器组中心频率按ANSI S1.11-2004标准指定。方法可以修改过滤器的位置带宽FrequencyRangeReferenceFrequency,OctaveRatioBase属性。

参考文献

奥法尼迪斯,索福克勒斯。信号处理概论.恩格尔伍德悬崖,新泽西州:普伦蒂斯大厅,2010年。

[2]美国声学学会。倍频带和分数倍频带模拟和数字滤波器的美国国家标准规范.ANSI s1.11 - 2004。梅尔维尔,纽约:美国声学学会,2009。

扩展功能

在R2019a中引入