多速率DSP滤波器中的时延和缩放
这个例子演示了时间延迟和缩放在多速率滤波器中的影响,以及如何计算它们。
多速率滤波器中的时延和缩放模型<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_97834400" class="anchor_target">
多速率滤波器是一个级联组合上采样,下采样和卷积滤波器(FIR或IIR)。这种滤波器结构通常用于实现重采样系统,其中输出是输入以不同速率重新采样的版本。非正式地,作为输入<年代pan class="inlineequation"> ,重采样系统的输出为<年代pan class="inlineequation"> .这是有一点滥用的符号,因为<年代pan class="inlineequation"> 时未定义<年代pan class="inlineequation"> noninteger。更正式地说,输入是插值到一个连续域函数<年代pan class="inlineequation"> 从输出中采样:
.
输入有时可以通过抽样来近似<年代pan class="inlineequation"> 按输入速率<年代pan class="inlineequation"> .由于滤波操作(例如低通/高通)是插值模型的一个组成部分,因此使用近似来代替相等。插值模型<年代pan class="inlineequation"> 不一定保存每个输入的值<年代pan class="inlineequation"> .
常数<年代pan class="inlineequation"> ,<年代pan class="inlineequation"> 而且<年代pan class="inlineequation"> 上式中分别为输入采样率、输出采样率和重采样输出时延。对于许多多速率过滤应用程序,查找它是有用的<年代pan class="inlineequation"> 而且<年代pan class="inlineequation"> 对于给定的输入采样率<年代pan class="inlineequation"> .
使用outputDelay
函数<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_BEA0B265" class="anchor_target">
您可以使用outputDelay
函数计算重采样输出延迟<年代pan class="emphasis">D输出采样率FsOut
对于以速率操作的给定筛选器对象傅氏国际
.此功能适用于任何支持滤波器分析方法的DSP系统对象。万博1manbetx有关受支持对象的列表,请参阅万博1manbetxoutputDelay
.返回的延迟值<年代pan class="emphasis">D用插值信号的自然单位(通常是秒)指定,对应于输入采样率。
考虑一个信号<年代pan class="inlineequation">
这是从连续信号中采样的<年代pan class="inlineequation">
以…的速度Ts
= 0.1年代
(即,Fs
= 10赫兹
).添加零均值高斯白噪声,标准差为0.05。
f = analyticSignal();<年代pan style="color:#228B22">% x是实变量的函数年代pan>Ts = 1/10;N = (0:511)';<年代pan style="color:#228B22">样本索引向量年代pan>u = f(n*Ts)+ 0.05*randn(size(n));figure(Position = [0 0 900 200]) plot(n*Ts, u);包含(<年代pan style="color:#A020F0">“时间”年代pan>);传奇(<年代pan style="color:#A020F0">“输入”年代pan>);
为了消除高频噪声,设计了低通滤波器,并将其应用于信号中。这种低通的截止频率为奈奎斯特频率的15%,过渡宽度为10%。将输入与过滤后的输出绘制在同一图上。注意输入和滤波信号之间的延迟。
Fs = 1/Ts;Fnyq = Fs/2;F0 = 0.15;<年代pan style="color:#228B22">归一化到奈奎斯特频率的截止频率年代pan>Tw = 0.1;G1 = dsp。lowpassFilter(SampleRate = Fs,<年代pan style="color:#0000FF">...年代pan>通频= (F0-TW/2)*Fnyq,<年代pan style="color:#0000FF">...年代pan>StopbandFrequency = (F0+TW/2)*Fnyq);Y = g1(u);ts = timescope(SampleRate=Fs,<年代pan style="color:#0000FF">...年代pan>ChannelNames = {<年代pan style="color:#A020F0">“输入”年代pan>,<年代pan style="color:#A020F0">低通滤波器输出的年代pan>},<年代pan style="color:#0000FF">...年代pan>YLimits = [3 3]);ts (u, y)
所观察到的延迟是任何卷积滤波器所固有的,例如在dsp。lowpassFilter
.调用outputDelay
函数来查找输出延迟。
D = g1.outputDelay()
D = 3.6000
要使输入与输出对齐,请将输出按时间向后移<年代pan class="emphasis">D单位,即输入在时间上向前移动相同的量。属性可以执行这样的转换TimeDisplayOffset
的属性timescope
对象。当你指定一个向量TimeDisplayOffset
的每个输入通道,而不是标量timescope
对象有自己的延迟,对应于向量中的条目TimeDisplayOffset
.将第一个通道(输入)延迟设置为<年代pan class="emphasis">D,并保持第二通道(输出)无延迟。这两个通道现在是同步的。
释放(ts);ts.TimeDisplayOffset = [D, 0];ts (u, y)
相同的延迟可用于标准的MATLAB®绘图。
情节(n * t, u);持有<年代pan style="color:#A020F0">在年代pan>;情节(n * Ts-D, y);持有<年代pan style="color:#A020F0">从年代pan>;包含(<年代pan style="color:#A020F0">“时间”年代pan>);传奇(<年代pan style="color:#A020F0">“输入”年代pan>,<年代pan style="color:#A020F0">的输出(过滤)年代pan>);
重采样输出时延与群时延的关系<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_39A1C4A1" class="anchor_target">
的outputDelay
函数使用卷积阶段的组延迟来计算总体重采样输出延迟。虽然这两个术语密切相关,但两者之间有一些区别:
标量与函数年代trong>:群时延是频率的函数,定义为<年代pan class="inlineequation"> 在哪里<年代pan class="inlineequation"> 是卷积系统的相位响应。输出延迟被定义为一个标量,它源于重采样模型<年代pan class="inlineequation"> .
定义范围:年代trong>输出延迟适用于多速率滤波器,而群延迟仅适用于卷积系统(单速率LTI系统)。
单位:年代trong>群延迟是以样本单位来测量的。输出延迟以插值信号的时间单位定义<年代pan class="inlineequation">
当多速率滤波器的卷积级具有线性相位时,其群时延不依赖于输入频率。对称滤波器设计,这是非常常见的DSP应用,有一个线性相位。在单级对称卷积滤波器的简单情况下,输出延迟仅仅是(常数)组延迟<年代pan class="inlineequation"> 缩放到采样时间,即。<年代pan class="inlineequation"> .对于具有非线性相位的单级滤波器,输出时延取决于输入频率,即<年代pan class="inlineequation"> .对于多级滤波器,输出延迟是其各级输出延迟的和。多阶段和非线性相位的情况将在本例后面讨论。
在一个简单的对称单级滤波器的情况下,群延迟可以被认为是它的脉冲响应的质心,这是它的对称点。过滤器g1
在上面的例子中是一个73点的FIR,与它的第36个索引对称。
H = g1.impz();茎(0:长度(h) 1、h);持有<年代pan style="color:#A020F0">在年代pan>;参照线(36,颜色=<年代pan style="color:#A020F0">“红色”年代pan>);持有<年代pan style="color:#A020F0">从年代pan>;包含(<年代pan style="color:#A020F0">' n(样本)年代pan>)
滤波器引入了36个样本的组延迟,这相当于3.6个时间单位的输出延迟占样本率Fs =
10赫兹。用质心加权和公式计算输出延时<年代pan class="inlineequation">
并验证它确实是3.6,与返回的值完全相同outputDelay
.
D_cm = Ts*sum((0:长度(h)-1)'.*h)/sum(h)
D_cm = 3.6000
使用采样率<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_D62C4F63" class="anchor_target">
可以使用named参数指定或覆盖输入采样率傅氏国际
.例如,假设输入采样率是2 kHz而不是10 Hz,计算输出延迟。请注意,返回的延迟值会相应变化,以反映新的时间单位。
D2k = g1。出putDelay(FsIn = 2e3)<年代pan style="color:#228B22">覆盖采样率为2 kHz年代pan>
D2k = 0.0180
默认情况下,傅氏国际
是从哪个对象上获得的outputDelay
被称为。如果物体具有内禀采样率特性,傅氏国际
等于这个性质。例如,dsp。lowpassFilter
而且dsp。IIRHalfbandDecimator
拥有财产SampleRate
,dsp。FarrowRateConverter
拥有财产InputSampleRate
.对于不具有采样率属性的对象,例如dsp。FIRFilter
而且dsp。FIRDecimator
的默认值傅氏国际
是1(每秒一个样本)。
获取多速率滤波器的输出采样率<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_63FAFDB3" class="anchor_target">
多速率过滤器,如dsp。FIRRateConverter
往往涉及到采样率的变化,因此输入采样率和输出采样率是不相等的。在下面的示例中,输出在时域上出现收缩。
g2 = dsp.FIRRateConverter(7,16);Y = g2(u);D = g2。出putDelay(FsIn = Fs); ts = timescope(SampleRate = Fs,<年代pan style="color:#0000FF">...年代pan>TimeDisplayOffset = [0, -D],<年代pan style="color:#0000FF">...年代pan>ChannelNames = {<年代pan style="color:#A020F0">“输入”年代pan>,<年代pan style="color:#A020F0">“输出”年代pan>},<年代pan style="color:#0000FF">...年代pan>YLimits = [3 3]);ts (u, y);
的outputDelay
函数返回输出采样率作为第二个输出参数,这在使用时特别方便dsp。FilterCascade
对象。调用outputDelay
获取两个输出参数<年代pan class="inlineequation">
.
[D, FsOut] = g2。outputDelay(傅氏国际=Fs)
D = 1.2000
FsOut = 4.3750
可以为的每个通道指定不同的采样率timescope
对象,通过将一个向量设置为其SampleRate
属性,而不是标量。步骤时,请确保使用相同的通道顺序timescope
对象。的第一个表项SampleRate
来Fs
(输入采样率),第二到FsOut
(输出采样率)。输入和输出现在在图上有相同的比例。
ts = timescope(SampleRate = [Fs, FsOut],<年代pan style="color:#0000FF">...年代pan>TimeDisplayOffset = [0, -D],<年代pan style="color:#0000FF">...年代pan>ChannelNames = {<年代pan style="color:#A020F0">“输入”年代pan>,<年代pan style="color:#A020F0">“输出”年代pan>},<年代pan style="color:#0000FF">...年代pan>YLimits = [3 3]);ts (u, y);
带宽限制模式:使用outputDelay
非线性相位滤波器<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_14ED8248" class="anchor_target">
到目前为止,我们使用的是对称滤波器设计,它具有线性相位和常数群延迟。另一方面,非对称滤波器具有不同的群延迟,并且可以在时域中表现出信号失真,这破坏了上面描述的重采样模型。使用outputDelay
在这种情况下是可能的,但需要一些谨慎。这将在下一节中讨论。
非线性相位滤波器中的失真<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_4A3B66A1" class="anchor_target">
因果型和稳定型有理IIR滤波器在DSP中很常见,它们通常具有非线性相位。例如,考虑以下低通IIR设计,它显然具有不同的群延迟。
F0 = 0.35;Tw = 0.2;G3 = dsp。lowpassFilter(SampleRate = Fs,<年代pan style="color:#0000FF">...年代pan>通频= (F0-TW/2)*Fnyq,<年代pan style="color:#0000FF">...年代pan>StopbandFrequency = (F0+TW/2)*Fnyq,<年代pan style="color:#0000FF">...年代pan>FilterType =<年代pan style="color:#A020F0">“信息检索”年代pan>);[G, W] = g3。grpdelay (2048 Fs);情节(W, G);包含(<年代pan style="color:#A020F0">的频率(赫兹)年代pan>);ylabel (<年代pan style="color:#A020F0">“群延迟(样本)”年代pan>);
的outputDelay
函数提醒用户,如果系统有一个非线性相位卷积阶段。
>> D = g3.outputDelay();<年代pan style="color:#228B22">%抛出警告。年代pan>系统对象具有非线性相位,但未指定载频Fc。年代pan>要抑制此警告,请显式指定Fc参数,或调用outputDelay方法年代pan>%波段测量输出。如果不指定载波频率值,则默认为Fc=0。年代pan>
为了演示非线性相位失真的影响,输入一个短时间脉冲到IIR滤波器g3
.请注意,输入和输出之间没有时间延迟和缩放关系,即它们不再满足重采样模型<年代pan class="inlineequation">
而且<年代pan class="inlineequation">
.
v = f(10*Ts*n);Y = g3(v);释放(ts);ts.TimeDisplayOffset = [D, 0];ts (v, y);ts.TimeSpanSource =<年代pan style="color:#A020F0">“属性”年代pan>;ts.TimeSpan = 20;
使用outputDelay
在具有非线性相位级的滤波器上,只有当相位级的组延迟在输入信号波段上相对恒定时才有意义。如果:
滤波器级在已知频带上有一个平坦的组延迟响应,或
若输入为窄带,则群时延响应可近似为输入频带上的常数。
在任何情况下,由于组延迟不是恒定的,所以需要指定对组延迟进行采样的频率。的outputDelay
函数通过参数接受该频率(在输入采样率单位中指定)足球俱乐部
.
具有部分平坦群时延响应的非线性相位滤波器(拟线性相位)<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_DFC7BE89" class="anchor_target">
一些滤波器设计具有非线性相位,但仍然在子带上有相对平坦的群延迟。例如,任何使用designFracDelayFIR
函数具有相对平坦的组延迟。其他例子包括dsp。IIRHalfbandDecimator
和dsp。FIRHalfbandInterpolator
在准线性相位设计模式下工作的滤波器。准线性设计模式补偿了IIR在通带上的非线性相位,极大地降低了失真。
设计一个IIR半波段抽取器,并绘制其群时延图。群延迟显然不是恒定的,但在过渡带外相对平坦。
G4 = dsp。IIRHalfbandDecimator (DesignMethod =<年代pan style="color:#A020F0">“准线性阶段”年代pan>);[G, W] = g4。g4.SampleRate grpdelay (8192);情节(W, G);包含(<年代pan style="color:#A020F0">的频率(赫兹)年代pan>);ylabel (<年代pan style="color:#A020F0">“群延迟(样本)”年代pan>);
要获得平坦区域上带宽受限信号的输出延迟,请设置足球俱乐部
是平坦区域内的任意频率。请注意,在平坦区域内不同频率的延迟值有轻微偏差是正常的,也是预期的。
D1 = g4。出putDelay(Fc = 0)
D1 = 4.9884e-04
Fc = 5000;D2 = g4。出putDelay(Fc = Fc)<年代pan style="color:#228B22">% 5千赫仍然在平坦区域年代pan>
D2 = 4.9889e-04
输入频带测量<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_B1F9F786" class="anchor_target">
对于具有非线性相位的滤波器,变化足球俱乐部
更改输出延迟<年代pan class="emphasis">D.的outputDelay
函数可以计算输入频率的间隔B = [f1, f2]
周围足球俱乐部
延迟值接近D到一个公差,或者<年代pan class="inlineequation">
对于每一个<年代pan class="inlineequation">
.带子的边缘,f1
而且f2
类的第三个输出参数中返回outputDelay
函数。公差以采样时间单位指定,使用托尔
命名参数。例如,获取延迟偏差最大的输入频带托尔
=距离标称值1秒<年代pan class="emphasis">D在频率上足球俱乐部
.
[D, ~, B] = g4。outputDelay(足球俱乐部=足球俱乐部,托尔=1)<年代pan style="color:#228B22">丢弃FsOut输出参数年代pan>
D = 4.9889e-04
B =<年代pan class="emphasis">1×210<年代up>3.年代up>× -9.9268 9.9268
请注意,测量的频带是双面的,可能包含负频率。
情节(W, G);包含(<年代pan style="color:#A020F0">的频率(赫兹)年代pan>);ylabel (<年代pan style="color:#A020F0">“群延迟(样本)”年代pan>);持有<年代pan style="color:#A020F0">在年代pan>;I = w >= b (1) & w <= b (2);<年代pan style="color:#228B22">找到带指数年代pan>plot(W(I), G(I), Color=<年代pan style="color:#A020F0">“米”年代pan>、线宽= 3);情节(Fc, D * g4。SampleRate,<年代pan style="color:#A020F0">“罗”年代pan>);传奇(<年代pan style="color:#A020F0">“延迟”年代pan>,<年代pan style="color:#A020F0">“输入乐队”年代pan>,<年代pan style="color:#A020F0">“俱乐部”年代pan>网格)<年代pan style="color:#A020F0">在年代pan>持有<年代pan style="color:#A020F0">从年代pan>
频带测量分辨率<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_21A69FFB" class="anchor_target">
如果测量的频带公差值很低,得到的频带可能是单频带(包含单个频率,指定频率)足球俱乐部
),属退化情况。这是因为组延迟搜索分辨率对于指定的公差来说太粗糙了。例如,重复系统的频带测量g4
具有严密的公差托尔
= 1 e - 3。返回的<年代pan class="emphasis">B等于(Fc, Fc)
,表示其频率单一。
Fc = 9600;Tol = 1e-3;[D, ~, B] = g4。outputDelay(足球俱乐部=足球俱乐部,托尔=托尔)
D = 5.0657e-04
B =<年代pan class="emphasis">1×29600 9600
情节(W, G,<年代pan style="color:#A020F0">“o”年代pan>);包含(<年代pan style="color:#A020F0">的频率(赫兹)年代pan>);ylabel (<年代pan style="color:#A020F0">“群延迟(样本)”年代pan>);持有<年代pan style="color:#A020F0">在年代pan>;情节(Fc, D * g4。SampleRate,<年代pan style="color:#A020F0">“罗”年代pan>);yline (D * g4。SampleRate+[-Tol Tol], Color=[0.5 0 0.8]) legend(<年代pan style="color:#A020F0">“延迟”年代pan>,<年代pan style="color:#A020F0">“俱乐部”年代pan>,<年代pan style="color:#A020F0">“容许区间”年代pan>网格)<年代pan style="color:#A020F0">在年代pan>持有<年代pan style="color:#A020F0">从年代pan>xlim ([Fc-5 Fc + 5]);
一个明显的解决办法是放宽容忍。但是,如果希望保持较低的容差,则可以使用FFTLength
参数。默认长度为<年代pan class="inlineequation">
.增加FFTLength
来<年代pan class="inlineequation">
注意返回的B
有两个明显的边缘,而不是单一的频率。
[D, ~, B] = g4。outputDelay(足球俱乐部=足球俱乐部,托尔=托尔,FFTLength=2^16)
D = 5.0657e-04
B =<年代pan class="emphasis">1×210<年代up>3.年代up>× 9.5998 9.6004
为了绘制频带,还要计算增加分辨率的群延迟。
[G, W] = g4.grpdelay(2^16,<年代pan style="color:#A020F0">“整体”年代pan>, g4.SampleRate);情节(W, G,<年代pan style="color:#A020F0">“o”年代pan>);包含(<年代pan style="color:#A020F0">的频率(赫兹)年代pan>);ylabel (<年代pan style="color:#A020F0">“群延迟(样本)”年代pan>);持有<年代pan style="color:#A020F0">在年代pan>;I = w >= b (1) & w <= b (2);<年代pan style="color:#228B22">找到带指数年代pan>plot(W(I), G(I), Color=<年代pan style="color:#A020F0">“米”年代pan>、线宽= 3);情节(Fc, D * g4。SampleRate,<年代pan style="color:#A020F0">“罗”年代pan>);yline (D * g4。SampleRate+[-Tol Tol], Color=[0.5 0 0.8]) legend(<年代pan style="color:#A020F0">“延迟”年代pan>,<年代pan style="color:#A020F0">“输入乐队”年代pan>,<年代pan style="color:#A020F0">“俱乐部”年代pan>,<年代pan style="color:#A020F0">“容许区间”年代pan>);网格<年代pan style="color:#A020F0">在年代pan>持有<年代pan style="color:#A020F0">从年代pan>xlim ([Fc-5 Fc + 5)
窄带信号<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_6F3BC88A" class="anchor_target">
的outputDelay
如果输入信号是窄带信号,即使组延迟不平坦,函数也可以使用。波段测量从outputDelay
可用于确定受延迟容限影响的信号的最大带宽。
当所考虑的系统具有非线性相位且信号为以某载波频率为中心的窄带信号时<年代pan class="inlineequation"> 时,重采样模型与线性相位情况略有不同。输入近似为
,
输出是
.
基带信号因输出延迟而延迟<年代pan class="inlineequation"> 的群时延计算<年代pan class="inlineequation"> .然而,载波信号经历不同的延迟,称为相位延迟,并记为<年代pan class="inlineequation"> .对于单速率系统,相位延迟仅仅是系统相位响应的负值<年代pan class="inlineequation"> 然后除以<年代pan class="inlineequation"> .
.
考虑IIR设计g3
,得到具有中心频率的窄带信号的输出时延Fc = 0.75赫兹
.的确,回归的乐队B=[0.526 Hz, 0.885 Hz]
包含载波频率,带宽为0.3589赫兹
.
Fc = 0.15*Fnyq;<年代pan style="color:#228B22">%载频年代pan>Tol = 1;[D, ~, B] = g3。outputDelay(傅氏国际=Fs,足球俱乐部=足球俱乐部,托尔=托尔)<年代pan style="color:#228B22">发现误差不超过1个时间单位年代pan>
D = 0.7457
B =<年代pan class="emphasis">1×20.5261 - 0.8850
画出响应和频带,并验证频率足球俱乐部
确实包含在乐队中。
[G, W] = g3。grpdelay (2048 Fs);情节(W, G);包含(<年代pan style="color:#A020F0">的频率(赫兹)年代pan>);ylabel (<年代pan style="color:#A020F0">“群延迟(样本)”年代pan>);持有<年代pan style="color:#A020F0">在年代pan>;I = w >= b (1) & w <= b (2);<年代pan style="color:#228B22">找到带指数年代pan>plot(W(I), G(I), Color=<年代pan style="color:#A020F0">“米”年代pan>、线宽= 3);Fc = 0.15*Fnyq;<年代pan style="color:#228B22">%载频年代pan>情节(Fc, D * Fs,<年代pan style="color:#A020F0">“罗”年代pan>);yline (D * g3。SampleRate+[-Tol Tol], Color=[0.5 0 0.8]) legend(<年代pan style="color:#A020F0">“延迟”年代pan>,<年代pan style="color:#A020F0">“输入乐队”年代pan>,<年代pan style="color:#A020F0">“俱乐部”年代pan>,<年代pan style="color:#A020F0">“容许区间”年代pan>);网格<年代pan style="color:#A020F0">在年代pan>持有<年代pan style="color:#A020F0">从年代pan>
载波移位和相位延迟<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_5C4AEB09" class="anchor_target">
通过滤波器对调制信号进行滤波,并将输入与具有适当延迟的输出绘制成图。正如预期的那样,延迟的输入在相同的包线下(延迟的基带信号)与输出同步,但有轻微的相移-载波信号的相位延迟。
ubase = f(n*Ts);<年代pan style="color:#228B22">%基带信号(evelope)年代pan>wc = 2*pi*Fc;<年代pan style="color:#228B22">%载频年代pan>u = f(n*Ts).*cos(wc*n*Ts) + 0.05*randn(size(n));Y = g3(u);ts = timescope(SampleRate = Fs,<年代pan style="color:#0000FF">...年代pan>TimeDisplayOffset = [D, 0, D],<年代pan style="color:#0000FF">...年代pan>ChannelNames = {<年代pan style="color:#A020F0">“延迟输入”年代pan>,<年代pan style="color:#A020F0">“输出”年代pan>,<年代pan style="color:#A020F0">延迟基带的年代pan>},<年代pan style="color:#0000FF">...年代pan>YLimits = [3 3]);t (u(1:250), y(1:250), ubase(1:250))
获得此相位延迟<年代pan class="inlineequation">
,使用phasez
函数。
% phasez将第一个参数解析为频率,只要它是一个矢量年代pan>至少两个元素的%。因此,我们必须通过[Fc Fc],而不仅仅是Fc。年代pan>= g3。phasez([足球俱乐部足球俱乐部],Fs);Pd = -phi(1)/wc
Pd = 0.6188
使用相位延迟来移动载波。考虑到相位延迟,滤波器输出几乎与延迟的输入参考完全对齐。
yref = f(n*Ts-D).*cos(wc*(n*Ts-pd));ts = timescope(SampleRate = Fs,<年代pan style="color:#0000FF">...年代pan>TimeDisplayOffset = [0,0, D],<年代pan style="color:#0000FF">...年代pan>ChannelNames = {<年代pan style="color:#A020F0">延迟输入(载波对齐)年代pan>,<年代pan style="color:#A020F0">“输出”年代pan>,<年代pan style="color:#A020F0">延迟基带的年代pan>},<年代pan style="color:#0000FF">...年代pan>YLimits = [3 3]);t (yref(1:250), y(1:250), ubase(1:250))
使用outputDelay
dsp。FilterCascade对象<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_611B0435" class="anchor_target">
的outputDelay
函数可以与过滤器级联对象一起使用,即使它们包含非线性阶段(尽管这是一个更微妙的情况)。例如,组合一个IIR半带插值器、一个低通滤波器和一个有理速率转换器。
G5 =级联(dsp。IIRHalfbandInterpolator (DesignMethod =<年代pan style="color:#A020F0">“准线性阶段”年代pan>),<年代pan style="color:#0000FF">...年代pan>dsp。lowpassFilter(FilterType=<年代pan style="color:#A020F0">“信息检索”年代pan>),<年代pan style="color:#0000FF">...年代pan>dsp.FIRRateConverter (7,4));
输入采样率可以使用傅氏国际
参数,还是由第一阶段派生出来的dsp。FilterCascade
对象。如果傅氏国际
未指定且第一阶段没有采样率属性,默认的采样率是多少傅氏国际
= 1。在这种情况下,第一级是IIR半带插值器,其采样率为22.05 kHz。
FsIn = g5.Stage1.SampleRate
FsIn = 22050
输出采样率预期在g5
是<年代pan class="inlineequation">
=77.175 kHz,这确实是返回的输出采样率outputDelay
.
[D, FsOut] = g5。outputDelay(足球俱乐部=0)<年代pan style="color:#228B22">输入采样率为第一阶段年代pan>
D = 8.5479e-04
FsOut = 77175
验证在指定时获得的结果是否相同FsIn = 22050
[D, FsOut] = g5。outputDelay(傅氏国际=傅氏国际,足球俱乐部=0)
D = 8.5479e-04
FsOut = 77175
处理信号g5
然后画出结果。输入和输出是同步的。
Y = g5(u);ts = timescope(SampleRate = [FsIn, FsOut],<年代pan style="color:#0000FF">...年代pan>TimeDisplayOffset = [0, -D],<年代pan style="color:#0000FF">...年代pan>ChannelNames = {<年代pan style="color:#A020F0">“输入”年代pan>,<年代pan style="color:#A020F0">“输出”年代pan>},<年代pan style="color:#0000FF">...年代pan>YLimits = [3 3]);ts (u(摘要),y (1:650));
采用多速率滤波器级联dsp。年代ampleRateConverter
,它也支持万博1manbetxoutputDelay
函数。例如,实例化一个采样率转换器对象,并找到它的输出延迟和采样率。中使用的默认筛选器设计dsp。年代ampleRateConverter
是对称FIR滤波器,所有阶段都有一个线性相位,不需要指定足球俱乐部
.
SRC = dsp。年代ampleRateConverter
SRC = dsp。年代ampleRateConverter with properties: InputSampleRate: 192000 OutputSampleRate: 44100 OutputRateTolerance: 0 Bandwidth: 40000 StopbandAttenuation: 80
[D, FsOut] = src.outputDelay()
D = 9.7148e-04
FsOut = 44100
dsp的频带测量。FilterCascade对象<年代pan id="mw_rtc_TimeDelayAndScalingInMultirateDSPFiltersExample_H_7B978BD8" class="anchor_target">
对于频带测量,级联必须使用高贵恒等式简化为单个滤波器级。例如,级联g5
可以简化为只有一个卷积阶段。测量该滤波器的输入频带。
[D, FsOut, B] = g5。outputDelay(傅氏国际=Fs,足球俱乐部=0,托尔= 0.1)
D = 1.8848
FsOut = 35
B =<年代pan class="emphasis">1×2-1.1450 - 1.1450
如果级联具有非线性阶段且不可约,outputDelay
会出错。例如,在十进制数之后串起的插值器通常不可约为单个滤波器级联。调用outputDelay
注意它会出错。
g = cascade(dsp.FIRDecimator,g3,dsp.FIRInterpolator);<年代pan style="color:#228B22">% >> [D,~,B] = g.outputDelay();年代pan>%使用dsp错误。FilterCascade/outputDelay年代pan>不支持插值器跟随抽取器的多级多速率滤波器的分析,除非万博1manbetx年代pan>插值器的累积速率变化因子%等于抽取器的累积速率变化因子。年代pan>级联不可约为单级,因此不支持波段估计。万博1manbetx年代pan>