实验目的:
( 1 )学会运用 Matlab 求离散时间信号的有理函数 z 变换的部分分式展开;
( 2 )学会运用 Matlab 分析离散时间系统的系统函数的零极点;
( 3 )学会运用 Matlab 分析系统函数的零极点分布与其时域特性的关系;
( 4 )学会运用 Matlab 进行离散时间系统的频率特性分析。
实验任务:
1 .试用 MATLAB 的 residuez 函数,求出以下部分分式展开和。
2. 试用 Matlab 画出下列因果系统的系统函数零极点分布图,并判断系统的稳定性。
3.试用 Matlab 绘制如下系统的频率响应曲线。
- 编写 Matlab 程序,系统的差分方程为 𝑦(𝑛) − 0.9𝑦(𝑛 − 8) = 𝑥(𝑛) − 𝑥(𝑛 − 8) 。
( 1 )画出该系统的零极点分布图,判断系统的稳定性;( 2 )画出系统在 0~2π 范围内的幅频特性曲线和相频特性曲线;(3 )分析该系统是什么类型的滤波器。
思考题
- 编写 Matlab 程序,分别采用系统 𝐻 1 (𝑧) = 𝑧/𝑧+0.8 、𝐻 2 (𝑧) = 𝑧/𝑧−1 、𝐻 3 (𝑧) = 𝑧 /𝑧+1.2
对音频文件 motherland.wav 进行滤波(可采用实验二的 conv 函数)。( 1 )画出滤 波前后该音频文件 1~2s 时间段的连续时域波形图,要求横坐标的单位为秒;( 2 ) 说明滤波后信号幅度变化的原因。 - 已知系统函数𝐻(𝑧) =
编写 Matlab 程序实现:( 1 )画出该系统的零极点分布图,判断系统的稳定性;(2 )画出系统在 0~2π 范围内的幅频特性曲线和相频特性曲线;(3 )查找资料说明该系统是什么类型的滤波器,在实际应用中有什么功能?
解答
一定要记得补零,不然会报错
最后一问的最后一小问答案:该系统是一个梳状滤波器,其特征是通过去除低频分量而能够增强特定频率的信号成分。
Matlab
%第一题
B1=[2,16,44,56,32];
A1=[3,3,-15,18,-12];
[R,P,K]=residuez(B1,A1);
R
P
K
%第二题
B2=[0,2,-1.6,-0.9];
A2=[1,-2.5,1.96,-0.48];
B3=[0,0,0,1,-1]
A3=[1,-0.9,-0.65,0.873,0];
%画图
figure
subplot(1,2,1);
zplane(B2,A2),grid on
legend('零点','极点');
title("零极点分布图");
subplot(1,2,2);
zplane(B3,A3),grid on
legend('零点','极点');
title("零极点分布图");
%题三
B4=[1,0,0];
A4=[1,-0.75,0.125];
[H,w]=freqz(B4,A4,400,'whole');
Hm=abs(H);
Hp=angle(H);
figure
subplot(2,1,1);
plot(w/pi,Hm),grid on;
xlabel("\omega/pi(rad/s)");
ylabel("Magnitude");
title("第三题的离散系统的幅频特性曲线")
subplot(2,1,2);
plot(w/pi,Hp),grid on;
xlabel("\omega/pi(rad/s)");
ylabel("Phase");
title("第三题的离散系统的相频特性曲线")
%第四题
B5=[1,0,0,0,0,0,0,-1];
A5=[1,0,0,0,0,0,0,-0.9];
[H2,w2]=freqz(B5,A5,400,"whole");
Hm2=abs(H2);
Hp2=angle(H2);
figure
subplot(3,1,1);
zplane(B5,A5),grid on;
legend('零点','极点');
title('零极点分布图');
subplot(3,1,2);
plot(w2/pi,Hm2),grid on;
xlabel("\omega/pi(rad/s)");
ylabel("Magnitude");
title("第四题的离散系统的幅频特性曲线")
subplot(3,1,3);
plot(w2/pi,Hp2),grid on;
xlabel("\omega/pi(rad/s)");
ylabel("Phase");
title("第四题的离散系统的相频特性曲线")
思考题解答
如果要提取1到2s一定要利用好fs框定范围,而不是全部拿出来
针对问答:
针对第二问,解释滤波后信号幅度变化的原因:
信号经过滤波后,幅度变化的原因主要包括:
1. 滤波器特性:不同的滤波器具有不同的频率响应,对某些频率成分的增益和衰减不同。高通滤波器会增强高频成分,而衰减低频成分,反之亦然。
2. 相位延迟:滤波器可能会引入相位延迟,导致频率成分的相位发生变化,从而影响到叠加后的幅度。
3. 增益:如果滤波器设计时增益设置不当,可能会导致输出信号的幅度与输入信号幅度存在明显差异。
4. 噪声和谐波成分:滤波过程中,如果输入信号中含有噪声或者高次谐波,滤波器会调整这些成分的幅度,从而影响输出信号的整体幅度。
5. 信号能量分布:不同频率成分在信号中的能量分布不同,滤波后整体信号能量的变化也会导致幅度变化。
通过这些因素的作用,滤波后信号的幅度就可能发生变化。
思考题二应该是一个带通滤波器。
Matlab
%思考题一
% 读取音频文件
[audio, fs] = audioread('motherland.wav'); % 加载音频文件
t = (0:length(audio)-1) / fs; % 时间向量,单位为秒
startSample = fs * 1; % 对应1秒的样本索引
endSample = fs * 2; % 对应2秒的样本索引
audio_segment = audio(startSample:endSample);
% 原始音频片段的波形
subplot(4,1,1);
plot(time_segment, audio_segment);
title('原始音频片段');
xlabel('时间 (秒)');
ylabel('幅度');
% 对音频片段进行滤波
% H1(z) = z / (z + 0.8)
b1 = [1 0]; % 分子系数
a1 = [1 0.8]; % 分母系数
filtered_audio1 = filter(b1, a1, audio_segment);
% 滤波后的音频波形
subplot(4,1,2);
plot(time_segment, filtered_audio1);
title('滤波后音频1 ');
xlabel('时间 (秒)');
ylabel('幅度');
% H2(z) = z / (z - 1)
b2 = [1 0];
a2 = [1 -1];
filtered_audio2 = filter(b2, a2, audio_segment);
subplot(4,1,3);
plot(time_segment, filtered_audio2);
title('滤波后音频2 )');
xlabel('时间 (秒)');
ylabel('幅度');
% H3(z) = z / (z + 1.2)
b3 = [1 0];
a3 = [1 1.2];
filtered_audio3 = filter(b3, a3, audio_segment);
% 绘制原始和滤波后音频的波形
time_segment = (0:length(audio_segment)-1) / fs; % 1-2秒片段的时间向量
subplot(4,1,4);
plot(time_segment, filtered_audio3);
title('滤波后音频3');
xlabel('时间 (秒)');
ylabel('幅度');
%思考题2
Bs=[1,-2,2];
As=[2,-2,1];
[Hs,ws]=freqz(Bs,As,400,'whole');
Hms=abs(Hs);
Hps=angle(Hs);
figure
subplot(3,1,1);
zplane(Bs,As),grid on;
legend('零点','极点');
title('零极点分布图');
subplot(3,1,2);
plot(ws/pi,Hms),grid on;
xlabel("\omega/pi(rad/s)");
ylabel("Magnitude");
title("思考题的离散系统的幅频特性曲线")
subplot(3,1,3);
plot(ws/pi,Hps),grid on;
xlabel("\omega/pi(rad/s)");
ylabel("Phase");
title("思考题的离散系统的相频特性曲线")
%应该是带通滤波器