主要内容

octaveFilterBank

倍频和分数倍频滤波器组

描述

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

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

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

  2. 使用参数调用对象,就像调用函数一样。

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

创建

描述

octFiltBank= octaveFilterBank返回一个倍频滤波器组。随着时间的推移,对象在每个输入通道中独立地过滤数据。

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

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

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

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

属性

全部展开

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

如果一个属性是可调,您可以随时更改它的值。

有关更改属性值的更多信息,请参见在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将倍频滤波器组应用于输入,并返回滤波后的输出。

输入参数

全部展开

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

数据类型:|

输出参数

全部展开

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

数据类型:|

对象的功能

要使用对象函数,请指定System对象™作为第一个输入参数。例如,释放名为system的对象的系统资源obj,使用下面的语法:

发行版(obj)

全部展开

多项式系数 得到滤波器系数
freqz 计算频率响应
fvtool 可视化滤波器组
getBandedgeFrequencies 得到过滤bandedges
getCenterFrequencies 滤波器中心频率
getGroupDelays 得到群延迟
信息 得到过滤信息
isStandardCompliant 验证倍频滤波器组符合ANSI S1.11-2004标准
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象

例子

全部折叠

创建一个1/3倍频程滤波器组的信号采样在48 kHz。设置频率范围为(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);Index = 1:20 0 x = randn(256,1); / /y = octFilBank (x);sa (y);结束

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

读入音频文件并听其内容。

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

创建一个默认的octaveFilterBank.滤波器组的默认频率范围是22 ~ 22050 Hz。超出这个范围的频率在重建信号中被衰减。

octFiltBank = octaveFilterBank (“SampleRate”fs);

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

audioOut = octFiltBank (audioIn);[N numFilters numChannels] =大小(audioOut)
N = 1265935
numFilters = 10
numChannels = 2

倍频滤波器组引入了各种组延迟。为了补偿组延迟,从单个滤波器输出中去除开始延迟,并在信号的端点填充零,以便它们都是相同的大小。使用getGroupDelays以获得组延迟。听团体延迟补偿重建。

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

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

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

算法

octaveFilterBank是一种并行结构的倍频滤波器。单独的倍频滤波器的设计描述octaveFilter.默认情况下,倍频滤波器组中心频率按照ANSI S1.11-2004标准的规定放置。属性可以修改过滤器位置带宽FrequencyRangeReferenceFrequency,OctaveRatioBase属性。

参考文献

索福克勒斯·奥法尼迪斯信号处理概论.Englewood Cliffs, NJ: Prentice Hall, 2010。

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

扩展功能

介绍了R2019a