实验项目 | LSI离散系统的频域分析 | ||
实验类别 | 基本性实验 | 实验学时 | 4学时 |
实验目的及设备 |
1.通过在频域中仿真LSI离散时间系统,理解离散时间系统对输入信号或延迟信号进行频域处理的特性。 2.理解LSI离散时间系统的传输函数和频率响应的概念。 3.理解LSI离散时间系统的滤波特性及滤波器的相关特性。 4.理解并仿真LSI离散时间系统的零、极点分布表征及特性关系。 二、实验设备 计算机,MATLAB语言环 |
预习 |
实验基础理论: LSI离散时间系统可用差分方程描述如下: 对应的传输函数和频率响应分别为:
分别有零点和极点。 |
实验内容 |
(说明:此部分应包含:实验内容、实验步骤、实验数据与分析过程等) 实验内容与步骤: 1.传输函数和频率响应分析 按以下的传输函数分别编程计算 计算当 时因果LSI离散时间系统的频率响应,并求出它们的群时延及冲激响应的开始部分(前100个值)。 频率响应: 调用abs()与angle()函数从幅度与相位两部分将因果LSI离散时间系统的频率响应展示出来 代码: b1=[0.15,0,-0.15];a1=[1,-0.5,0.7]; b2=[0.15,0,-0.15];a2=[0.7,-0.5,1]; w=0:0.1:pi; z=exp(j*w); h1=0.15*(1-z.^(-2))./(1-0.5*z.^(-1)+0.7.^(-2)); h2=0.15*(1-z.^(-2))./(0.7-0.5*z.^(-1)+z.^(-2)); subplot(2,2,1) plot(w,abs(h1)),title('系统1的幅度') subplot(2,2,2) plot(w,abs(h2)),title('系统2的幅度') subplot(2,2,3) plot(w,angle(h1)),title('系统1的相位') subplot(2,2,4) plot(w,angle(h2)),title('系统2的相位') 结果: 群时延: 可调用 grpdelay函数求此系统函数的群延迟; 代码: b1=[0.15,0,-0.15];a1=[1,-0.5,0.7]; b2=[0.15,0,-0.15];a2=[0.7,-0.5,1]; subplot(1,2,1) plot(grpdelay(b1,a1)),grid,title('系统1群延迟') subplot(1,2,2) plot(grpdelay(b2,a2)),grid,title('系统2群延迟') 结果: 冲激响应的开始部分(前100个值): y = filter(b,a,x) 使用由分子和分母系数 b 和 a 定义的有理传递函数 对输入数据 x 进行滤波;调用stem()函数绘制离散序列数据(求冲击响应) 代码: b1=[0.15,0,-0.15];a1=[1,-0.5,0.7]; b2=[0.15,0,-0.15];a2=[0.7,-0.5,1]; xn=[1,zeros(1,99)]; hn1=filter(b1,a1,xn); hn2=filter(b2,a2,xn); n1=0:length(hn1)-1; n2=0:length(hn2)-1; subplot(1,2,1); stem(n1,hn1),xlabel('n'),ylabel('h1(n)'),title('冲激响应hn1') subplot(1,2,2); stem(n2,hn2),xlabel('n'),ylabel('h2(n)'),title('冲激响应hn2') 结果: 2.画出上面两个LSI离散时间系统对应的零、极点图。 调用zplane函数求系统函数的零极点分布(zplane(b,a),其中b和a是行向量,首先使用根来找到由分子系数b和分母系数a表示的传递函数的零和极点。) 代码: b1=[0.15,0,-0.15];a1=[1,-0.5,0.7]; b2=[0.15,0,-0.15];a2=[0.7,-0.5,1]; subplot(1,2,1) zplane(b1,a1) title('系统1的零极点分布'), subplot(1,2,2) zplane(b2,a2) title('系统2的零极点分布'), 结果: 3.滤波器仿真和特性实验 设计实现一个在0.45处具有3dB截止角频率的一阶无限冲激响应低通滤波器和一个无限冲激响应高通滤波器,计算并画出他们各自的增益响应,并证明它们是全通互补和功率互补的。 具体步骤: 设计低通滤波器:截止频率:0.45并选择一个合适的增益以满足3dB的截止频率。 设计高通滤波器:截止频率:0.45并选择一个合适的增益以满足3dB的截止频率。 计算和绘制增益响应。 验证全通互补和功率互补。 代码: % 低通滤波器设计 fc = 0.45; % 截止频率 H_lowpass = @(f) 1./(1 + 1j*f/fc); % 传递函数 % 高通滤波器设计 H_highpass = @(f) 1 - H_lowpass(f); % 传递函数 % 频率范围 f = linspace(0, 1, 1000); % 0到1之间的频率 % 计算增益响应 gain_lowpass = abs(H_lowpass(f)); gain_highpass = abs(H_highpass(f)); % 绘制增益响应 figure; subplot(2, 1, 1); plot(f, 20*log10(gain_lowpass)); title('低通滤波器增益响应'); xlabel('频率'); ylabel('增益 (dB)'); subplot(2, 1, 2); plot(f, 20*log10(gain_highpass)); title('高通滤波器增益响应'); xlabel('频率'); ylabel('增益 (dB)'); % 验证全通互补 total_response = gain_lowpass .* gain_highpass; figure; plot(f, total_response); title('总增益响应'); xlabel('频率'); ylabel('总增益'); % 验证功率互补 power_lowpass = gain_lowpass.^2; power_highpass = gain_highpass.^2; power_total = total_response.^2; figure; subplot(2, 1, 1); plot(f, power_lowpass); title('低通滤波器功率响应'); xlabel('频率'); ylabel('功率'); subplot(2, 1, 2); plot(f, power_highpass); title('高通滤波器功率响应'); xlabel('频率'); ylabel('功率'); % 总功率响应 figure; plot(f, power_total); title('总功率响应'); xlabel('频率'); ylabel('总功率'); 结果:
结果分析: 由图可观测出低通滤波器和高通滤波器的增益响应在截止频率处分别为0.5,它们的乘积在整个频率范围内为1,这证明了它们是全通互补的。另外,它们的功率响应也互补,即低通滤波器的功率响应与高通滤波器的功率响应之和等于1。 4.作图分析 分别生成如下两个因果系统传输函数的零、极点图,并对该图进行研究,推断它们的稳定性。 系统1的零、极点图: 代码: b1=[1,0,0];a1=[1,0,0]; zplane(b1,a1) title('系统1的零极点分布'), 结果: 代码: b2=[1,-1.848,0.85];a2=[1,-1.851,0.85]; zplane(b2,a2) title('系统2的零极点分布'), 结果: 结果分析: 由图可看出,系统1与系统2的零极点分布在单位圆内,因此系统为稳定的。 实验扩展与思考: 1.在传输函数和频率响应分析实验中,选择了哪些类型的滤波器?这些滤波器有何区别?你会选择哪一种滤波器来滤波,为什么? 在MATLAB中进行传输函数和频率响应分析实验时,可以选择以下几种不同类型的滤波器;以下是一些常见的滤波器类型和它们的主要区别: 1.低通滤波器(Low-Pass Filter): 通过的频率范围:0Hz到截止频率之间。 阻止频率:截止频率之后的频率范围。 主要应用:滤波掉高频噪声,保留低频信号成分。 2.高通滤波器(High-Pass Filter): 通过的频率范围:截止频率之后的频率范围。 阻止频率:0Hz到截止频率之间。 主要应用:滤波掉低频噪声,保留高频信号成分。 3.带通滤波器(Band-Pass Filter): 通过的频率范围:两个截止频率之间。 阻止频率:两个截止频率之外的频率范围。 主要应用:仅保留特定频率范围内的信号。 4.带阻滤波器(Band-Stop Filter): 通过的频率范围:两个截止频率之外的频率范围。 阻止频率:两个截止频率之间的频率范围。 主要应用:从信号中去除特定频率范围内的噪声或干扰。 5.全通滤波器(All-Pass Filter): 通过所有频率,但可能引入相位延迟。 主要应用:不改变信号的幅度响应,仅调整信号的相位。 6.陷波滤波器(Notch Filter): 阻止特定频率附近的频率范围,通过其他频率。 主要应用:去除信号中的单一频率成分,如干扰信号或基线漂移。 选择哪种滤波器主要取决于实验具体需求。如果需要保留某个频率范围内的信号,可以选择相应类型的滤波器(如低通、高通、带通、带阻滤波器)。如果希望调整信号的相位而不改变幅度响应,可以选择全通滤波器。如果需要去除特定频率成分,可以选择陷波滤波器。 最终选择滤波器类型的决定应基于具体应用场景和信号特性,以满足信号处理目标。 2.常见的四种理想零相位数字滤波器有哪些?分别画出它们的频率响应。 常见的四种理想零相位数字滤波器:理想低通滤波器、理想高通滤波器、理想带通滤波器、理想带阻滤波器。 它们的频率响应代码: % 采样频率 Fs = 1000; % 假设采样频率为 1000 Hz % 截止频率 Fpass = 100; % 以Hz为单位 % 理想低通滤波器 butterworth_order = 6; % Butterworth滤波器的阶数 [b, a] = butter(butterworth_order, Fpass / (Fs/2), 'low'); [H_lowpass, w] = freqz(b, a, 1024, Fs); % 理想高通滤波器 [b, a] = butter(butterworth_order, Fpass / (Fs/2), 'high'); [H_highpass, w] = freqz(b, a, 1024, Fs); % 理想带通滤波器 Fstop1 = 50; % 假设截止频率 1 为 50 Hz Fstop2 = 200; % 假设截止频率 2 为 200 Hz [b, a] = butter(butterworth_order, [Fstop1, Fstop2] / (Fs/2), 'bandpass'); [H_bandpass, w] = freqz(b, a, 1024, Fs); % 理想带阻滤波器 [b, a] = butter(butterworth_order, [Fstop1, Fstop2] / (Fs/2), 'stop'); [H_bandstop, w] = freqz(b, a, 1024, Fs); % 绘制频率响应 figure; subplot(2, 2, 1); plot(w, 20 * log10(abs(H_lowpass))); title('理想低通滤波器频率响应'); xlabel('频率 (Hz)'); ylabel('增益 (dB)'); subplot(2, 2, 2); plot(w, 20 * log10(abs(H_highpass))); title('理想高通滤波器频率响应'); xlabel('频率 (Hz)'); ylabel('增益 (dB)'); subplot(2, 2, 3); plot(w, 20 * log10(abs(H_bandpass))); title('理想带通滤波器频率响应'); xlabel('频率 (Hz)'); ylabel('增益 (dB)'); subplot(2, 2, 4); plot(w, 20 * log10(abs(H_bandstop))); title('理想带阻滤波器频率响应'); xlabel('频率 (Hz)'); ylabel('增益 (dB)'); 结果: 3.从以上实验中可见,因果无限冲激响应滤波器稳定的条件是什么? 从以上实验中可见,因果无限冲激响应(IIR)滤波器的稳定条件是:其极点都必须位于单位圆内。这是因为IIR滤波器的输出是过去输入值的累积和,如果极点在单位圆之外,它们的幅度会无限增长,导致系统不稳定。 |
实验总结 |
通过实验,我更清晰地理解了常见的四种理想零相位数字滤波器:理想低通滤波器、理想高通滤波器、理想带通滤波器和理想带阻滤波器,通过调用matlab函数分别做出其频率响应,可以更直观地显示出其不同地特性;如果需要保留某个频率范围内的信号,可以选择相应类型的滤波器(如低通、高通、带通、带阻滤波器),如果希望调整信号的相位而不改变幅度响应,可以选择全通滤波器。同时更加清楚了因果无限冲激响应滤波器稳定的具体条件:极点都必须位于单位圆内。 学习到的新函数: Grpdelay 群延迟函数; zplane(b,a),其中b和a是行向量,首先使用根来找到由分子系数b和分母系数a表示的传递函数的零和极点。 用matlab 画图时需要先规定一个窗口;如subplot(2,1,1);zplane(b,a);函数放置顺序也会对结果产生影 |