作业要求链接: 信号与系统2022春季作业-第14次作业 : https://zhuoqing.blog.csdn.net/article/details/125103375
§14 参考答案
1.1 离散傅里叶变换
1.1.1 数据采样参数
◎ 求解:
(1) 数据采样时间间隔等于数据采样频率 f s f_s fs 的倒数。 根据要求信号频谱中最高频率 f M A X ≥ 5 k H z f_{MAX} \ge 5\,\,kHz fMAX≥5kHz ,那么 f s ≥ 2 f M A X = 10 k H z f_s \ge 2f_{MAX} = 10\,\,kHz fs≥2fMAX=10kHz ,因此数据采样时间间隔 T s = 1 f s = 1 2 ⋅ f M A X = 1 10 × 1 0 3 = 100 μ s T_s = {1 \over {f_s }} = {1 \over {2 \cdot f_{MAX} }} = {1 \over {10 \times 10^3 }} = 100\mu s Ts=fs1=2⋅fMAX1=10×1031=100μs
(2) 根据频率间分辨率 f 1 ≤ 10 H z f_1 \le 10Hz f1≤10Hz ,因此数据采样总时间 T 1 ≥ 1 f 1 = 1 10 = 100 m s T_1 \ge {1 \over {f_1 }} = {1 \over {10}} = 100ms T1≥f11=101=100ms 那么采样数据点 N = T 1 T s = 0.1 100 × 1 0 − 6 = 1000 N = { {T_1 } \over {T_s }} = { {0.1} \over {100 \times 10^{ - 6} }} = 1000 N=TsT1=100×10−60.1=1000 为了适应FFT算法,最终取 N = 1024 N = 1024 N=1024 。
1.1.2 频谱分析计算量
◎ 求解:
(1) 对于两个长度分别为 N , M N,M N,M 的序列,计算它们完全(线)卷积,所需要的实数乘法次数为 N ⋅ M N \cdot M N⋅M ,实数加法次数为: ( N − 1 ) ( M − 1 ) \left( {N - 1} \right)\left( {M - 1} \right) (N−1)(M−1) 。
为了说明上述结论,可以由列表法求解序列卷积过程,展示了所有乘法和加法次数。具体可以参见下面两个说明。
▲ 图1.1.1 表格法计算离散序列卷积示意图
▲ 图1.1.2 以M<N为例,说明在卷积过程中加法次数
由此,可以知道在本题中,两个序列的长度分别为 240, 14。所以直接使用线卷积计算两个序列的卷积,实数乘法次数为 240 × 14 = 3360 240 \times 14 = 3360 240×14=3360 ;实数加法次数为 ( 240 − 1 ) × ( 14 − 1 ) = 3107 \left( {240 - 1} \right) \times \left( {14 - 1} \right) = 3107 (240−1)×(14−1)=3107 。
(2) 利用基-2的FFT, 完成 x [ n ] , h [ n ] x\left[ n \right],h\left[ n \right] x[n],h[n] 之间的线卷积,根据课件上给定的快速计算框架,其中需要:
- 将两个序列都通过补零达到超过 240+14-1=253,并且是 2 的整数次幂,因此将两个序列都补零到长度为 N = 256 N = 256 N=256 ;
计算过程需要的三次FFT的计算复杂度和一次变换域内的乘积。因此总的复数乘法次数为: N M = 3 × N 2 log 2 N + N = 3328 N_M = 3 \times {N \over 2}\log _2 N + N = 3328 NM=3×2Nlog2N+N=3328 需要的复数加法次数为 N A = 3 × N log 2 N + ( N − 1 ) = 6399 N_A = 3 \times N\log _2 N + \left( {N - 1} \right) = 6399 NA=3×Nlog2N+(N−1)=6399 在根据复数运算定义,最终可以知道相对应的实数乘法次数和加法次数 N R M = 4 × N M = 4 × 3328 = 13312 N_{RM} = 4 \times N_M = 4 \times 3328 = 13312 NRM=4×NM=4×3328=13312 N R A = 2 × N M + 2 × N A = 2 × 3328 + 2 × 6399 = 19454 N_{RA} = 2 \times N_M + 2 \times N_A = 2 \times 3328 + 2 \times 6399 = 19454 NRA=2×NM+2×NA=2×3328+2×6399=19454
(3) 对比上面频谱分析中计算量结果,可以看到当序列的长度短的时候,直接使用线卷积所需要的计算量比使用FFT完成线卷积所需要的计算量还小。因此,利用FFT实现快速卷积所适应的序列卷积需要满足一下两个条件:
- 两个序列长度比较长;
- 两个序列的长度大体相同;
1.1.3 数据频谱分析时间
◎ 求解:
- 使用DFT:
对于长度为 N = 4096 N = 4096 N=4096 的序列 x [ n ] x\left[ n \right] x[n] ,计算直接计算对应的 DFT,所需要的复数乘法和加法为
N D M = N 2 = 409 6 2 N_{DM} = N^2 = 4096^2 NDM=N2=40962 N D A = N ( N − 1 ) = 4096 × 4095 N_{DA} = N\left( {N - 1} \right) = 4096 \times 4095 NDA=N(N−1)=4096×4095
所需要的的实数乘法和加法次数
N r D M = 4 × D D M = 4 × 409 6 2 N_{rDM} = 4 \times D_{DM} = 4 \times 4096^2 NrDM=4×DDM=4×40962 N r D A = 2 ( N D A + N D M ) = 2 × ( 409 6 2 + 4096 × 4095 ) N_{rDA} = 2\left( {N_{DA} + N_{DM} } \right) = 2 \times \left( {4096^2 + 4096 \times 4095} \right) NrDA=2(NDA+NDM)=2×(40962+4096×4095)
单片机完成计算所需要的时间
T D = 20 ⋅ N r D M + 2.5 ⋅ N r D A T_D = 20 \cdot N_{rDM} + 2.5 \cdot N_{rDA} TD=20⋅NrDM+2.5⋅NrDA = 20 × 4 × 409 6 2 + 2.5 × 2 × ( 409 6 2 + 4096 × 4095 ) = 20 \times 4 \times 4096^2 + 2.5 \times 2 \times \left( {4096^2 + 4096 \times 4095} \right) =20×4×40962+2.5×2×(40962+4096×4095) = 1.359 × 1 0 4 s = 3.728 H o u r = 1.359 \times 10^4 \,\,s = 3.728\,Hour =1.359×104s=3.728Hour
- 使用FFT:
使用FFT所需要的复数乘法和加法次数为
N F M = N 2 log 2 N = 24576 N_{FM} = {N \over 2}\log _2 N = 24576 NFM=2Nlog2N=24576 N F A = N ⋅ log 2 N = 49152 N_{FA} = N \cdot \log _2 N = 49152 NFA=N⋅log2N=49152
所需要的实数乘法和加法的次数为 N r F M = 4 N F M = 4 × 24576 = 98304 N_{rFM} = 4N_{FM} = 4 \times 24576 = 98304 NrFM=4NFM=4×24576=98304 N r F A = 2 ( N F M + N F A ) = 2 × ( 24576 + 49152 ) = 147456 N_{rFA} = 2\left( {N_{FM} + N_{FA} } \right) = 2 \times \left( {24576 + 49152} \right) = 147456 NrFA=2(NFM+NFA)=2×(24576+49152)=147456
单片机完成计算所需要的时间
T F = 20 ⋅ N r F M + 2.5 ⋅ N r F A = 20 × 98304 + 2.5 × 147456 T_F = 20 \cdot N_{rFM} + 2.5 \cdot N_{rFA} = 20 \times 98304 + 2.5 \times 147456 TF=20⋅NrFM+2.5⋅NrFA=20×98304+2.5×147456 = 2.33472 s = 2.33472\,s =2.33472s
1.1.4 对比线卷积与圆卷积
◎ 求解:
一般情况下, 对于长度分别为 N , M N,M N,M 两个序列, M < N M < N M<N ,进行长度为 N N N 的圆卷积,其中会有 N − M + 1 N - M + 1 N−M+1 个计算式,是由长度为 M M M 的序列于长度为 N N N 的序列完全重合时计算出来的。此时他们的结果与线卷积的结果是相同的。
由此可以知道对于本题所给定的两个序列,它们的长度分别为 10,25,所以对应的有 25-10+1=16 个计算取值相同。
1.1.5 两个序列反变换
◎ 求解: 根据 DFT 的线性特性,可以把两个实数序列的DFT组合成一个新的序列 Z [ k ] = X [ k ] + j ⋅ Y [ k ] Z\left[ k \right] = X\left[ k \right] + j \cdot Y\left[ k \right] Z[k]=X[k]+j⋅Y[k] 使用 FFT 对 Z [ k ] Z\left[ k \right] Z[k] 进行反变换, 这样所获得结果为 z [ n ] = x [ n ] + j ⋅ y [ n ] z\left[ n \right] = x\left[ n \right] + j \cdot y\left[ n \right] z[n]=x[n]+j⋅y[n] 所以可以从反变换结果的实部和虚部分别得到对应的 x [ n ] , y [ n ] x\left[ n \right],y\left[ n \right] x[n],y[n] 。
1.2 滤波器设计
1.2.1 物理可实现性
◎ 求解:
(1) 根据佩里-维纳准则,要求 ∣ H ( j Ω ) ∣ 2 \left| {H\left( {j\Omega } \right)} \right|^2 ∣H(jΩ)∣2 积分有限。
对 ∣ H ( j ω ) ∣ 2 = 1 Ω 4 + Ω 2 + 1 \left| {H\left( {j\omega } \right)} \right|^2 = {1 \over {\Omega ^4 + \Omega ^2 + 1}} ∣H(jω)∣2=Ω4+Ω2+11 进行积分。 根据 H ( x ) = 1 x 4 + x 2 + 1 H\left( x \right) = {1 \over {x^4 + x^2 + 1}} H(x)=x4+x2+11 对应的原函数为
H 1 ( x ) = 3 6 [ arctan ( 2 3 x 3 − 3 3 ) + arctan ( 2 3 x 3 + 3 3 ) ] + 1 4 ln x 2 + x + 1 x 2 − x + 1 H_1 \left( x \right) = { {\sqrt 3 } \over 6}\left[ {\arctan \left( { { {2\sqrt 3 x} \over 3} - { {\sqrt 3 } \over 3}} \right) + \arctan \left( { { {2\sqrt 3 x} \over 3} + { {\sqrt 3 } \over 3}} \right)} \right] + {1 \over 4}\ln { {x^2 + x + 1} \over {x^2 - x + 1}} H1(x)=63[arctan(323x−33)+arctan(323x+33)]+41lnx2−x+1x2+x+1
所以 ∫ − ∞ + ∞ ∣ H ( j Ω ) ∣ 2 d Ω = 3 3 π \int_{ - \infty }^{ + \infty } {\left| {H\left( {j\Omega } \right)} \right|^2 d\Omega } = { {\sqrt 3 } \over 3}\pi ∫−∞+∞∣H(jΩ)∣2dΩ=33π
因此这个系统函数是物理可实现的;
(2) 由于 ∣ H ( j Ω ) ∣ 2 = ∣ 100 − Ω 4 ∣ Ω 4 + 20 Ω 2 + 10 \left| {H\left( {j\Omega } \right)} \right|^2 = { {\left| {100 - \Omega ^4 } \right|} \over {\Omega ^4 + 20\Omega ^2 + 10}} ∣H(jΩ)∣2=Ω4+20Ω2+10∣∣100−Ω4∣∣ 对于 Ω \Omega Ω 趋向于 ± ∞ \pm \infty ±∞ 时对应的取值不为 0, 所以它对应的积分是发散的。根据佩里-维纳准则,这个系统函数不满足 绝对可积,所以改滤波器无法物理实现。
1.2.2 滤波器结构
◎ 求解:
(1) H 1 ( z ) = 1 1 − a z − 1 H_1 \left( z \right) = {1 \over {1 - az^{ - 1} }} H1(z)=1−az−11
▲ 图1.2.1
(2) H 2 ( z ) = ( 1 − z − 1 ) 3 = 1 − 3 z − 1 + 3 z − 2 − z − 3 H_2 \left( z \right) = \left( {1 - z^{ - 1} } \right)^3 = 1 - 3z^{ - 1} + 3z^{ - 2} - z^{ - 3} H2(z)=(1−z−1)3=1−3z−1+3z−2−z−3
▲ 图1.2.2
(3) H 3 ( z ) = 1 − z − 1 1 − a z − 1 H_3 \left( z \right) = { {1 - z^{ - 1} } \over {1 - az^{ - 1} }} H3(z)=1−az−11−z−1
▲ 图1.2.3
(4) H 4 ( z ) = ( 1 − z − 1 ) 2 1 − ( a 1 + a 2 ) z − 1 + a 3 z − 2 H_4 \left( z \right) = { {\left( {1 - z^{ - 1} } \right)^2 } \over {1 - \left( {a_1 + a_2 } \right)z^{ - 1} + a_3 z^{ - 2} }} H4(z)=1−(a1+a2)z−1+a3z−2(1−z−1)2
▲ 图1.2.4
(5)
H 5 ( z ) = 0.28 z − 1 + 0.192 z − 2 + 0.05 z − 3 1 + 0.65 z − 1 + 0.55 z − 2 + 0.03 z − 3 H_5 \left( z \right) = {
{0.28z^{ - 1} + 0.192z^{ - 2} + 0.05z^{ - 3} } \over {1 + 0.65z^{ - 1} + 0.55z^{ - 2} + 0.03z^{ - 3} }} H5(z)=1+0.65z−1+0.55z−2+0.03z−30.28z−1+0.192z−2+0.05z−3
- 直接I型:
▲ 图1.2.5
- 直接II型:
▲ 图1.2.6
- 级联型:
把系统函数进行因式分解 H 5 ( z ) = 0.28 z 2 + 0.192 z + 0.05 ( z + 0.05819 ) ( z 2 − 0.5918 z + 0.5156 ) H_5 \left( z \right) = { {0.28z^2 + 0.192z + 0.05} \over {\left( {z + 0.05819} \right)\left( {z^2 - 0.5918z + 0.5156} \right)}} H5(z)=(z+0.05819)(z2−0.5918z+0.5156)0.28z2+0.192z+0.05 因此可以形成如下级联滤波形式
▲ 图1.2.7
1.2.3 滤波器转换
(1)
H ( s ) = 5 ( s + 2 ) ( s + 3 ) H\left( s \right) = {5 \over {\left( {s + 2} \right)\left( {s + 3} \right)}} H(s)=(s+2)(s+3)5
-
脉冲响应不变法:
H ( s ) = − 5 s + 3 + 5 s + 2 H\left( s \right) = - {5 \over {s + 3}} + {5 \over {s + 2}} H(s)=−s+35+s+25
对应的数字滤波器为: H ( z ) = − 5 1 − e − 3 / 2 z − 1 + 5 1 − e − 1 z − 1 H\left( z \right) = { { - 5} \over {1 - e^{ - 3/2} z^{ - 1} }} + {5 \over {1 - e^{ - 1} z^{ - 1} }} H(z)=1−e−3/2z−1−5+1−e−1z−15
- 双线性变换法:
H ( z ) = 5 ( 4 1 − z − 1 1 + z − 1 + 2 ) ( 4 1 − z − 1 1 + z − 1 + 3 ) = 5 ( z + 1 ) 2 42 z 2 − 20 z + 2 H\left( z \right) = {5 \over {\left( {4{ {1 - z^{ - 1} } \over {1 + z^{ - 1} }} + 2} \right)\left( {4{ {1 - z^{ - 1} } \over {1 + z^{ - 1} }} + 3} \right)}} = { {5\left( {z + 1} \right)^2 } \over {42z^2 - 20z + 2}} H(z)=(41+z−11−z−1+2)(41+z−11−z−1+3)5=42z2−20z+25(z+1)2
x,z = symbols('x,z')
s = 4*(1-z**-1)/(1+z**-1)
ss = 5/(s+2)/(s+3)
result = simplify(ss)
(2)
-
脉冲响应不变法:
H ( s ) = 1 2 s + 1 + 1 s + 1 H\left( s \right) = {1 \over {2s + 1}} + {1 \over {s + 1}} H(s)=2s+11+s+11
对应的数字滤波器为: H ( z ) = 1 2 1 1 − e − 0.25 z − 1 + 1 1 − e − 0.5 z − 1 H\left( z \right) = {1 \over 2}{1 \over {1 - e^{ - 0.25} z^{ - 1} }} + {1 \over {1 - e^{ - 0.5} z^{ - 1} }} H(z)=211−e−0.25z−11+1−e−0.5z−11
-
双线性变化法:
H ( z ) = 2 ( 7 z 2 + 2 z − 5 ) 45 z 2 − 62 z + 21 H\left( z \right) = { {2\left( {7z^2 + 2z - 5} \right)} \over {45z^2 - 62z + 21}} H(z)=45z2−62z+212(7z2+2z−5)
■ 相关文献链接:
● 相关图表链接: