数字信号处理实验二
个信号,再对输出信号进行分析。
2.2在2.1的基础上编写num=ones[1 -1],运行程序得出结论。
2.4分别用扫频信号通过2.1、2.2的系统,进行比较分析。
2.7分别计算出y1[n]和y2[n],得到yt[n];再利用filter函数求得y[n],计算差值输出,比较y[n]和yt[n]。
2.20根据impz函数的调用方式,得到
%扫频信号通过2.1系统:
clf;
n = 0:100;
s1 = cos(2*pi*0.05*n);
s2 = cos(2*pi*0.47*n);
a = pi/2/100;
b = 0;
arg = a*n.*n + b*n;
x = cos(arg);
M = input('滤波器所需的长度=');
num = ones(1,M);
num = [0.9 -0.45 0.35 0.002] den = [1 0.71 -0.46 -0.62],再调用impz函数,画出图像。
2.23首先产生序列x[n],把它作为四阶系统的输入,生成y[n]。然后将同样的输入x[n]应用到第一级得到y1[n]。接着用相同的方法得到y2[n]。最后求得两者的差,并画出图像。
三ห้องสมุดไป่ตู้实验器材及软件
1.微型计算机1台
2. MATLAB 7.0软件
四、实验原理
1.三点平滑滤波器是一个线性时不变的有限冲激响应系统,将输出延时一个抽样周期,可得到三点平滑滤波器的因果表达式,生成的滤波器表示为
归纳上式可得
此式表示了一个因果M点平滑FIR滤波器。
2.对线性离散时间系统,若y1[n]和y2[n]分别是输入序列x1[n]和x2[n]的响应,则输入
title('输出信号');
axis;
2.7运行程序P2.3,对由加权输入得到的y[n]与在相同权系数下输出y1[n]和y2[n]相加得到的yt[n]进行比较,这两个序列是否相等?该系统是线性系统吗?
% Program P2_3
clf;
n = 0:40;
a = 2;b = -3;
x1 = cos(2*pi*0.1*n);
xlabel('时间序号n'); ylabel('振幅');
title('信号#2');
subplot(2,2,3);
plot(n, x);
axis([0, 100, -2, 2]);
xlabel('时间序号n'); ylabel('振幅');
title('输入信号');
subplot(2,2,4);
a = pi/2/100;
b = 0;
arg = a*n.*n + b*n;
x = cos(arg);
M = input('滤波器所需的长度=');
num = [1 -1];
y = filter(num,1,x)/M;
subplot(2,2,1);
plot(n, s1);
axis([0, 100, -2, 2]);
y = filter(num,1,x)/M;
subplot(2,2,1);
plot(n, s1);
axis([0, 100, -2, 2]);
xlabel('时间序号n'); ylabel('振幅');
title('信号#1');
subplot(2,2,2);
plot(n, s2);
axis([0, 100, -2, 2]);
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);
y2 = filter(num,den,x2,ic);
s2 = cos(2*pi*0.47*n);
x = s1+s2;
M = input('滤波器所需的长度=');
num = ones(1,M);
y = filter(num,1,x)/M;
subplot(2,2,1);
plot(n, s1);
axis([0, 100, -2, 2]);
xlabel('时间序号n'); ylabel('振幅');
在M=2的基础上,线性时不变系统由y[n]=0.5(x[n]+x[n-1])变成y[n]=0.5(x[n]-x[n-1]),则在MATLAB上,程序P2.1更改:
num可以直接表示为num=[1 -1],通用的表达式为:num=[1 -ones(1,M-1)]。
得到图像为
2.4修改程序P2.1,用一个长度为101、最低频率为0、最高频率为0.5的扫频正弦信号作为输入信号(见程序P1.7),计算其输出信号。你能用该系统对扫频信号的响应来解释习题Q2.1和习题Q2.2的结果吗?
2.28分别用conv函数和filter函数求得输出,进行图像比较。
六、实验记录(数据、图表、波形、程序等)
2.1对M=2,运行上述程序,生成输入x[n]=s1[n]+s2[n]的输出信号。输入x[n]的哪个分量被该离散时间系统抑制?
% Program P2_1
clf;
n = 0:100;
s1 = cos(2*pi*0.05*n);
的输出响应为
则系统称为线性系统。
3.对于离散时不变系统,若y1[n]是x1[n]的响应,则输入
x[n]=x1[n-n0]
的输出响应为
y[n]=y1[n-n0]
则称系统为时不变系统。
五、实验步骤
2.1首先利用MATLAB产生一个高频正弦信号和一个低频正弦信号,利用两个信号生成一个输入信号,接着利用filter函数生成输出信号,最后利用plot函数画出4
title('冲激响应'); grid;
2.20修改程序P2.5,产生如下因果线性时不变系统的冲激响应的前45个样本:
clf;
N = 45;
num = [0.9 -0.45 0.35 0.002];
den = [1 0.71 -0.46 -0.62];
y = impz(num,den,N);
stem(y);
plot(n, y);
axis([0, 100, -2, 2]);
xlabel('时间序号n'); ylabel('振幅');
title('输出信号');
axis;
%扫频信号通过2.2系统:
clf;
n = 0:100;
s1 = cos(2*pi*0.05*n);
s2 = cos(2*pi*0.47*n);
stem(n,yt);
ylabel('振幅');
title('加权输出: a \cdot y_{1}[n] + b \cdot y_{2}[n]');
subplot(3,1,3)
stem(n,d);
xlabel('时间序号n');ylabel('振幅');
title('差信号');
2.12运行程序P2.4并比较输出序列y[n]和yd[n-10]。这两个系列之间有什么关系?该系统是时不变系统吗?
2.19运行程序P2.5,生成式(2.15)所给离散时间系统的冲激响应。
% Program P2_5
clf;
N = 40;
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
y = impz(num,den,N);
stem(y);
xlabel('时间序号n'); ylabel('振幅');
xlabel('时间序号n'); ylabel('振幅');
title('输入信号');
subplot(2,2,4);
plot(n, y);
axis([0, 100, -2, 2]);
xlabel('时间序号n'); ylabel('振幅');
title('输出信号');
axis;
2.2若线性时不变系统由y[n]=0.5(x[n]+x[n-1])变成y[n]=0.5(x[n]-x[n-1]),对输入x[n]=s1[n]+s2[n]的影响是什么?
xlabel('时间序号n'); ylabel('振幅');
title('冲激响应'); grid;
2.23运行程序P2.6,计算输出序列y[n]和y2[n]以及差值信号d[n]。Y[n]和y2[n]相等吗?
ic = [0 0];
y = filter(num,den,x,ic);
yd = filter(num,den,xd,ic);
d = y - yd(1+D:41+D);
subplot(3,1,1)
stem(n,y);
ylabel('振幅');
title('输出y[n]'); grid;
subplot(3,1,2)
plot(n, x);
axis([0, 100, -2, 2]);
xlabel('时间序号n'); ylabel('振幅');