数字信号处理实验二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二离散时间系统的时域分析实验室名称: 实验时间:
六、实验记录(数据、图表、波形、程序等)
Q2、1 程序代码:
%产生输入信号
n = 0:100;
s1 = cos(2*pi*0、05*n); %一个低频正弦
s2 = cos(2*pi*0、47*n); %一个高频正弦
x = s1+s2;
%滑动平均滤波器的实现
M = input('Desired length of the filter = ');
num = ones(1,M);
y = filter(num,1,x)/M;
clf;
%显示输入与输出信号
subplot(2,2,1);
plot(n, s1);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('Signal #1');
subplot(2,2,2);
plot(n, s2);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('Signal #2');
subplot(2,2,3);
plot(n, x);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('Input Signal');
subplot(2,2,4);
plot(n, y);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('Output Signal'); axis;
显示结果:
Q2、2 代码(将输出信号的代码做出修改,其余代码与Q2、1相同): n=0:100;
s1=cos(2*pi*0、05*n);
s2=cos(2*pi*0、47*n);
x=s1+s2;
M=input(' Desired length of the filter = ');
num=(-1)、^[0:M-1];
y=filter(num,1,x)/M;
clf;
%显示输入与输出信号
subplot(2,2,1);
plot(n, s1);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('Signal #1');
subplot(2,2,2);
plot(n, s2);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('Signal #2');
subplot(2,2,3);
plot(n, x);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('Input Signal');
subplot(2,2,4);
plot(n, y);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('Output Signal');
axis;
显示结果:
Q2、4 程序代码:
%构造长度为101、最低频率为0、最高频率为0、5的扫频正弦信号n = 0:100;
a = pi/2/100;
b = 0;
arg = a*n、*n + b*n;
x = cos(arg);
M = input('Desired length of the filter = ');
num = ones(1,M);
y = filter(num,1,x)/M;
clf;
subplot(2,1,1);
plot(n,x);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('扫频正弦信号');
subplot(2,1,2);
plot(n, y);
axis([0, 100, -2, 2]);
xlabel('Time index n'); ylabel('Amplitude');
title('滤波后的输出信号');
显示结果:
Q2、7 程序代码:
% 生成输入序列
clf;
n = 0:40;
a = 2;
b = -3;
x1 = cos(2*pi*0、1*n);
x2 = cos(2*pi*0、4*n);
x = a*x1 + b*x2;
num = [2、2403 2、4908 2、2403];
den = [1 -0、4 0、75];
ic = [0 0]; % 设置零初始条件
y1 = filter(num,den,x1,ic); % 计算输出 y1[n]
y2 = filter(num,den,x2,ic); % 计算输出 y2[n]
y = filter(num,den,x,ic); %计算输出 y[n]
yt = a*y1 + b*y2;
d = y - yt; % 计算差值输出 d[n]
% 画出输出与差信号
subplot(3,1,1)
stem(n,y);
ylabel('振幅');
title('加权输入: a \cdot x_{1}[n] + b \cdot x_{2}[n]的输出'); subplot(3,1,2)
stem(n,yt);
ylabel('振幅');