主要内容

octaveFilter

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

描述

octaveFilter系统对象™在每个输入通道上独立地执行倍频带或分数倍频带滤波。八度频带是一个频带,其中最高频率是最低频率的两倍。八度带和分数八度带滤波器通常用于模拟人类如何感知响度。八度滤波器最好从对数尺度上理解,对数尺度模拟了人耳如何对频谱进行加权。

要对输入执行倍频或分数倍频滤波:

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

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

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

octFilt = octavfilter创建一个System对象,octFilt,它在每个输入通道上独立地执行八度带滤波。

octFilt = octaveFilter(centerFreq设置CenterFrequency财产centerFreq

octFilt = octaveFilter(centerFreqbw设置带宽财产bw

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

例子:octFilt = octaveFilter(1000,'1/3 octave','SampleRate',96000)创建一个System对象,octFilt,中心频率为1000hz, 1/3倍频滤波器带宽,采样率为96000 Hz。

属性

全部展开

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

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

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

倍频筛选器的顺序,指定为偶数。

可调:没有

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

倍频滤波器的中心频率(以Hz为单位),指定为正标量。

当使用parameterTuner时,中心频率必须在[0.2,SampleRate/ 2)赫兹。

可调:是的

数据类型:|

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

可调:是的

数据类型:字符|字符串

过采样切换,指定为真正的

  • ——倍频滤波器以输入采样率运行。

  • 真正的——倍频滤波器以输入采样率的两倍运行。过采样最小化了双线性变换带来的频率翘曲效应。FIR半带插值器实现了倍频滤波前的过采样。半带decimator将采样率降低到经过倍频滤波后的输入采样率。

可调:没有

数据类型:逻辑

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

可调:是的

数据类型:|

使用

描述

例子

audioOut= octFilt (audioIn对输入信号进行倍频滤波,audioIn,并返回过滤后的信号,audioOut.类的算法和属性指定过滤类型octaveFilter系统对象,octFilt

输入参数

全部展开

音频输入到倍频滤波器,指定为矩阵。矩阵的列被视为独立的音频通道。

数据类型:|

输出参数

全部展开

音频输出从八度滤波器,返回为一个相同大小的矩阵audioIn

数据类型:|

对象的功能

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

发行版(obj)

全部展开

createAudioPluginClass 创建音频插件类,实现的功能系统对象
可视化 可视化并验证过滤器响应
isStandardCompliant 验证倍频滤波器设计符合ANSI S1.11-2004标准
getFilter 返回设置了设计参数的双方过滤器对象
getANSICenterFrequencies 获取有效的ANSI S1.11-2004中心频率列表
parameterTuner 在流处理时调优对象参数
configureMIDI 配置音频对象与MIDI控制器之间的MIDI连接
disconnectMIDI 从音频对象断开MIDI控件
getMIDIConnections 获取音频对象的MIDI连接
克隆 创建重复的系统对象
isLocked 确定系统对象正在使用中
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象
一步 运行系统对象算法

请注意

octaveFilter金宝app支持额外的过滤分析功能。看到分析倍频滤波器设计获取详细信息。

例子

全部折叠

使用octaveFilter设计一个以1000hz为中心的1/3倍频滤波器。使用八度滤波器设计处理音频信号。

创建一个dsp。一个udioFileReader对象。

samplesPerFrame = 1024;Reader = dsp。一个udioFileReader(“rockguitar - 16 - 44 - p1 -立体声- 72 secs.wav”“SamplesPerFrame”, samplesPerFrame);

创建一个octaveFilter对象。使用读卡器的采样率作为倍频滤波器的采样率。

centerFreq = 1000;bw =1/3倍频程的;Fs = reader.SampleRate;octFilt = octaveFilter(centerFreq,bw,“SampleRate”Fs);

可视化滤波器响应并验证它是否符合ANSI S1.11-2004标准的0类掩码。

可视化(octFilt“阶级0”

创建一个频谱分析仪来可视化原始音频信号和经过八度带滤波后的音频信号。

Scope = dsp。简介(...“SampleRate”Fs,...“PlotAsTwoSidedSpectrum”假的,...“FrequencyScale”“日志”...“FrequencyResolutionMethod”“WindowLength”...“WindowLength”samplesPerFrame,...“标题”“倍频带滤波”...“ShowLegend”,真的,...“ChannelNames”,{原始信号的“过滤信号”});

在音频流循环中处理音频信号。将过滤后的音频和原始音频可视化。作为最佳实践,在完成时释放System对象。

~isDone(reader) x = reader();y = octFilt(x)范围([x (: 1), y (: 1)))结束释放(octFilt)释放(reader)释放(scope)

图频谱分析仪包含一个axis对象和其他类型为uiflowcontainer、uimenu、uitoolbar的对象。标题为Octave-Band Filtering的axes对象包含2个类型为line的对象。这些对象分别代表原始信号、滤波信号。

创建一个八度音阶过滤器。可视化筛选器响应,并验证它符合类2。

octFilt = octaveFilter(“CenterFrequency”, 1000);可视化(octFilt二班的

使用分析过滤器fvtool

fvtool (octFilt“Fs”octFilt.SampleRate)

图形过滤可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为Magnitude Response (dB)的axes对象包含一个类型为line的对象。

octaveFilter对象支持多种筛金宝app选器分析方法。有关更多信息,请使用帮助在命令行:

帮助octaveFilter.helpFilterAnalysis
以下分析方法可用于离散时间过滤器系统对象:fvtool -滤波器可视化工具info -滤波器信息freqz -频响相位-相位响应零相位-零相位响应grpdelay -群延迟响应相位-相位延迟响应impz -脉冲响应impzlength -脉冲响应长度stepz -阶跃响应zplane -极点/零图成本-实现滤波器的成本估计系统对象测量-频响顺序的测量特征-滤波器顺序系数-滤波器系数a structure firtype - Determine the type (1-4) of a linear phase FIR filter System object tf - Convert to transfer function zpk - Convert to zero-pole-gain ss - Convert to state space representation isallpass - Verify if filter System object is allpass isfir - Verify if filter System object is FIR islinphase - Verify if filter System object is linear phase ismaxphase - Verify if filter System object is maximum phase isminphase - Verify if filter System object is minimum phase isreal - Verify if filter System object is minimum real issos - Verify if filter System object is in second-order sections form isstable - Verify if filter System object is stable realizemdl - Filter realization (Simulink diagram) specifyall - Fully specify fixed-point filter System object settings cascade - Create a FilterCascade System object Second-order sections: scale - Scale second-order sections of BiquadFilter System object scalecheck - Check scaling of BiquadFilter System object reorder - Reorder second-order sections of BiquadFilter System object cumsec - Cumulative second-order section of BiquadFilter System object scaleopts - Create an options object for second-order section scaling sos - Convert to second-order-sections (for IIRFilter System objects only) Fixed-Point (Fixed-Point Designer Required): freqrespest - Frequency response estimate via filtering freqrespopts - Create an options object for frequency response estimate noisepsd - Power spectral density of filter output due to roundoff noise noisepsdopts - Create an options object for output noise PSD computation Multirate Analysis: polyphase - Polyphase decomposition of multirate filter System object gain (CIC decimator) - Gain of CIC decimator filter System object gain (CIC interpolator) - Gain of CIC interpolator filter System object For decimator, interpolator, or rate change filter System objects the analysis tools perform computations relative to the rate at which the filter is running. If a sampling frequency is specified, it is assumed that the filter is running at that rate. Help for octaveFilter.helpFilterAnalysis is inherited from superclass dsp.internal.FilterAnalysis

从一个八度频带滤波器组中使用不同的八度频带处理语音信号。

设计一个1/2倍频滤波器,估计中心频率为800hz。使用isStandardCompliant找到最近的柔度中心频率。

octFilt = octaveFilter(800,的1/2倍频程);[compliancestry atus,suggestedCenterFrequency] = isStandardCompliant(octFilt,“阶级0”
compliancestry atus = logical 0 suggestedCenterFrequency = 841.3951

改变中心频率octFilt对象返回的建议中心频率isStandardCompliant.获取有效的ANSI S1.11-2004中心频率列表,给定您指定的频率octFilt中心频率。

octFilt。CenterFrequency = advisstedcenterfrequency;Fo = getANSICenterFrequencies(octFilt);

创建一个音频文件阅读器和音频设备写入器。

fileReader = dsp。AudioFileReader (“Counting-16-44p1-mono-15secs.wav”);deviceWriter = audioDeviceWriter(“SampleRate”, fileReader.SampleRate);

创建一个范围来可视化经过过滤和未经过滤的信号。

Scope = dsp。简介(...“PlotAsTwoSidedSpectrum”假的,...“FrequencyScale”“日志”...“标题”“倍频带滤波”...“ShowLegend”,真的,...“ChannelNames”,{原始信号的“过滤信号”});

在音频流循环中,使用八度频带滤波器处理音频信号。改变中心频率就能听到效果。作为最佳实践,在处理后释放对象。

指数= 12;octFilt。CenterFrequency = Fo(指数);Count = 1;~isDone(fileReader) x = fileReader();y = octFilt(x)范围((x, y)) deviceWriter (y);如果国防部(统计,100)= = 0 octFilt。CenterFrequency=Fo(index); index = index+1;结束Count = Count +1;结束release(scope) release(deviceWriter) release(fileReader)

方法从音频音阶中去除附加噪声octaveFilter

创建audioOscillator而且audioDeviceWriter具有默认属性的对象。创建一个octaveFilter对象,中心频率设置为100hz。

osc = audioooscillator;deviceWriter = audioDeviceWriter;octFilt = octaveFilter(100);

在音频流循环中,听由音频振荡器创建的音调。该音含有加性高斯噪声。

I = 1:400 x = osc();X1 = x + 0.1*randn(512,1);deviceWriter (x1);如果快速眼动(我100)= = 0 osc。频率= osc.频率*2;结束结束

创建一个频谱分析仪来查看过滤和未过滤的信号。

Scope = dsp。简介(...“PlotAsTwoSidedSpectrum”假的,...“FrequencyScale”“日志”...“FrequencyResolutionMethod”“WindowLength”...“标题”“倍频带滤波”...“ShowLegend”,真的,...“SpectralAverages”10...“ChannelNames”,{原始信号的“过滤信号”});

将音频振荡器的频率重置为默认值100hz。

osc。频率= 100;

在音频流循环中,使用八度带滤波器过滤损坏的音调。当音调在循环中改变频率时,更改八度滤波器的中心频率以匹配。作为最佳实践,一旦完成,就释放音频设备。

I = 1:400 x = osc();X1 = x + 0.1*randn(512,1);x2 = octFilt(x1);deviceWriter (x2);如果快速眼动(我100)= = 0 osc。频率= osc.频率*2;octFilt。CenterFrequency = octFilt.CenterFrequency*2;结束范围((x1, x2))结束发布(deviceWriter)发布(范围)

图频谱分析仪包含一个axis对象和其他类型为uiflowcontainer、uimenu、uitoolbar的对象。标题为Octave-Band Filtering的axes对象包含2个类型为line的对象。这些对象分别代表原始信号、滤波信号。

设计一个采样率为96khz的六阶1/3倍频滤波器。

octFilt = octaveFilter(“FilterOrder”6...“带宽”1/3倍频程的...“SampleRate”96年e3);

获取ANSI S1.11-2004标准定义的中心频率。标准定义的中心频率取决于带宽而且SampleRate属性。

centerFrequencies = getANSICenterFrequencies(octFilt)
centerFrequencies =1×53104× 0.0000 0.0000 0.0000 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0002 0.0002 0.0003 0.0003 0.0004 0.0005 0.0006 0.0008 0.0010 0.0013 0.0016 0.0020 0.0020 0.0032 0.0050 0.0063 0.0079 0.0100 0.0126 0.0158 0.0200 0.0251 0.0316 0.0398 0.0501 0.0631 0.0794 0.1000 0.1259 0.1585 0.1995 0.2512 0.3162 0.3981 0.5012 0.6310 0.7943 1.0000 1.2589 1.5849 1.9953

设置倍频滤波器的中心频率为19.953 kHz,并使用“0级”合规掩码可视化响应。

octFilt。中心频率=中心频率(38);可视化(octFilt“阶级0”

图上的红色遮罩定义了滤波器的幅度响应的边界。该滤波器的幅度响应超过了顺应性掩模的上限,约为6.6 kHz。解决这个问题的一种方法是增加过滤器的阶数,使过滤器的滚转更陡。

要使倍频滤波器设计符合要求,请将倍频滤波器顺序设置为8。

octFilt。FilterOrder = 8;

使倍频滤波器设计符合要求的另一个选项是设置Oversample财产真正的.它设计并运行的过滤器是指定的两倍SampleRate减少设计阶段双线性变换的影响。

octFilt。FilterOrder = 6;octFilt。过采样=真;

设计一个六阶2/3倍频滤波器,采样率为96khz。

octFilt = octaveFilter(“FilterOrder”6...“带宽”“2/3倍频程”...“SampleRate”96年e3);

获取ANSI S1.11-2004标准定义的中心频率。标准定义的中心频率取决于带宽而且SampleRate属性。

centerFrequencies = getANSICenterFrequencies(octFilt)
centerFrequencies =1×25104× 0.0000 0.0001 0.0001 0.0002 0.0003 0.0004 0.0006 0.0010 0.0016 0.0025 0.0040 0.0063 0.0100 0.0158 0.0251 0.0398 0.0631 0.1000 0.1585 0.2512 0.3981 0.6310 1.0000 1.5849 2.5119

将倍频滤波器的中心频率设置为~ 6hz,并使用“0类”合规掩码可视化响应。

octFilt。CenterFrequency = centerFrequencies(2);可视化(octFilt“阶级0”

图上的红色遮罩定义了滤波器的幅度响应的边界。该滤波器的幅度响应低于符合性掩码的下限5.5至7.5 Hz。

八度滤波器组中的低频滤波器具有非常低的归一化中心频率,为它们设计的滤波器具有几乎在单位圆上的极。为了使该滤波器符合ANSI标准,它必须在较低的采样率下设计和操作。

为了使倍频滤波器设计符合要求,将采样率设置为48 kHz。

octFilt。SampleRate = 48e3;

创建一个dsp。一个udioFileReader逐帧读取音频。创建一个audioDeviceWriter将音频写入声卡。创建一个octaveFilter来处理音频数据。调用可视化绘制倍频滤波器的频率响应。

framength = 1024;fileReader = dsp。AudioFileReader (“RockDrums-44p1-stereo-11secs.mp3”...“SamplesPerFrame”, frameLength);deviceWriter = audioDeviceWriter(“SampleRate”, fileReader.SampleRate);octFilt = octaveFilter(“SampleRate”, fileReader.SampleRate);可视化(octFilt)

调用parameterTuner来打开一个UI来调优的参数octaveFilter而流。

parameterTuner (octFilt)

在音频流循环中:

  1. 从文件中读入一帧音频。

  2. 应用倍频滤波。

  3. 将音频帧写入音频设备以供收听。

流媒体时,调整八度滤波器的参数,并听取效果。

~isDone(fileReader) audioIn = fileReader();audioOut = octFilt(audioIn);deviceWriter (audioOut);drawnowlimitrate%需要更新参数结束

作为最佳实践,一旦完成就释放对象。

释放(deviceWriter)释放(fileReader)释放(octFilt)

更多关于

全部展开

提示

createAudioPluginClass而且configureMIDI属性的可调属性octaveFilter对面向用户的参数:

财产 范围 映射 单位
CenterFrequency [22000] 日志 赫兹
带宽 1倍频程的“2/3倍频程”的1/2倍频程1/3倍频程的“1/6倍频程”“1/12倍频程”“1/24倍频程”,或“1/48倍频程”

您的MIDI控制器范围被离散为七个级别,对应于七个带宽选择。

- - -

算法

全部展开

参考文献

[1]Orfanidis,索福克勒斯。信号处理导论.恩格尔伍德悬崖,新泽西州:普伦蒂斯大厅,2010年。

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

扩展功能

在R2016b中引入