当前位置:文档之家› 数字信号处理实验2

数字信号处理实验2

subplot(2,2,2);
plot(n,s2);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
title('信号#2');
subplot(2,2,3);
plot(n,x);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
N=40;
num=[2.2403 2.4908 2.2403];
den=[1 -0.4 0.75];
y=impz(num,den,N);
stem(y);
ylabel('振幅');
xlabel('时间序号n');
title('冲激响应');
Q2.20
clf;
N=40;
num=[0.9 -0.45 0.35 0.002];
M=input('滤波器所需的长度=');
num=ones(1,M);
y=filter(num,1,x)/M;
subplot(2,1,1);
stem(n,x);
axis([0,100,-2,2]);
xlabel('时间序号n');
ylabel('振幅');
title('输入信号');
subplot(2,1,2);
stem(n,y);
ylabel('振幅');
title('加权输入:a \cdotx_{1}[n]+b \cdotx_{2}[n]的输出');
subplot(3,1,2)
ylabel('振幅');
title('加权输出:a \cdotx_{1}[n]+b \cdotx_{2}[n]');
subplot(3,1,3)
3.描述因果线性时不变离散时间系统,可用命令filter进行仿真。
计算冲激响应可用函数impz表示计算冲击响应钱N个样本可用y=impz(num,den,N)来表示。
五、实验步骤
按照课本上的例题书写程序。
六实验记录(数据、图表、波形、程序等)
Q2.1
clf;
n=0:100;
s1=cos(2*pi*0.05*n);
3.运用MATLAB程序得出线性时不变离散时间系统的冲激响应。
4.熟悉相应的MATLAB命令,如filter,impz。
5.实验与理论相结合,能达到对理论的更好理解。
二、实验内容
1.滑动平均系统的仿真;
2.线性和非线性系统的仿真;
3.线性时不变离散时间系统的仿真;
Q2.1对M=2,运行上述程序,生成输入x[n]=s1[n]+s2[n]的输出信号。输入x[n]的哪个分量被该离散时间系统抑制?
y2=filter(num2,den2,y1);
d=y-y2;
subplot(3,1,1)
stem(n,y);
ylabel('振幅');
title('四阶实现的输出');grid;
subplot(3,1,2)
stem(n,y2);
ylabel('振幅');
title('级联实现的输出');grid;
title('输入信号');
subplot(2,2,4);
plot(n,y);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
title('输出信号');
axis;
Q2.2
clf;
n=0:100;
s1=cos(2*pi*0.05*n);
s2=cos(2*pi*0.47*n);
Q2.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]的影响是什么?
答:线性时不变系统由y[n]=0.5(x[n]+x[n-1])变成y[n]=0.5(x[n]-x[n-1])可以修改程序中的num=ones(1,M)为num=[1,-ones(1,M-1)]。看程序运行结果,可以看出输出信号保留了输入信号x[n]的高频部分,低频部分被抑制了。该系统将由低通滤波器变为高通滤波器。它会让s2信号的高频成分通过,而把s1信号的低频成分滤除。
num=[0.06 -0.19 0.27 -0.26 0.12];
y=filter(num,den,x);
num1=[0.3 -0.2 0.4];den1=[1 0.9 0.8];
num2=[0.2 -0.5 0.3];den2=[1 0.7 0.85];
y1=filter(num1,den1,x);%级联第一级输出
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);
y=filter(num,den,x,ic);
yt=a*y1+b*y2;
d=y-yt;
subplot(3,1,1)
subplot(3,1,3);
stem(n,d);
ylabel('振幅');
xlabel('时间序号n');
title('差信号');grid;
Q2.28
%p2.7
clf;
h=[3 2 1 -2 1 0 -4 0 3];%冲激
x=[1 -2 3 -4 3 2 1];
y=conv(h,x);
n=0:14;
Q2.28运行程序p2.7,对序列h[n]和y[n]求卷积,生成y[n],并用FIR
滤波器h[n]对输入x[n]滤波,求得y1[n]。y[n]和y1[n]有差别吗?为什么要使用对x[n]补零后得到的x1[n]作为输入来产生y1[n]?
计算线性时不变离散时间系统的冲激响应,运用MATLAB命令y=impz(num,den,N),得出冲激响应的前N个样本。
Q2.7
运行程序P2.3,对由加权输入得到的y[n]与在相同权系数下输出y1[n]和y2[n]相加得到的yt[n]进行比较,这两个序列是否相等?该系统是线性系统吗?
title('信号#1');
subplot(2,2,2);
plot(n,s2);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
title('信号#2');
subplot(2,2,3);
plot(n,x);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
den=[1 0.71 -0.46 -0.62];
y=impz(num,den,N);
stem(y);
ylabel('振幅');
xlabel('时间序号n');
title('冲激响应');
Q2.23
%p2.6
%级联实现
clf;
x=[1 zeros(1,40)];
n=0:40;
den=[1 1.6 2.28 1.325 0.68];
三、实验器材及软件
1.微型计算机1台
2. MATLAB 7.0软件
四、实验原理
1.若y1[n]和y2[n]分别是因果离散时间系统输入信号u1[n]和u2[n]的响应,则当
u1[n]=u2[n] n<N时,有y1[n]=y2[n] n<N
2.对于离散时不变系统,若y1[n]是x1[n]的响应,则输入x[n]=x1[n=n0]的输出响应为y[n]=y1[n-n0]。
title('输入信号');
subplot(2,2,4);
plot(n,y);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
title('输出信号');
axis;
Q2.4
clf;
n=0:100;
a=pi/2/100;
b=0;arg=a*n.*n+b*n;x=cos(arg);
Q2.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]有什么影响?
Q2.4修改程序P2.1,用一个长度为101,最低频率为0,最高频率为0.5的扫频正弦信号作为输入信号,计算其输出信号。
Q2.7运行程序P2.3,对由加权输入得到的y[n]与在相同权系数下输出y1[n]和y2[n]相加得到的yt[n]进行比较,这两个序列是否相等?该系统是线性系统吗?
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]);
相关主题