实验一 离散序列卷积
学号:Xb07680232 班级: 07通信2班 姓名:汪丽芳 日期: 4月9日 地点:3#304
实验一:离散时间序列卷积和MA TLAB 实现
(一)简述实验目的及实验原理
1、掌握离散卷积计算方法;
2、学会线性常系数差分方程的迭代解法;
3、学会针对具体系统设计程序;
(二)实验内容
1、用MATLAB 计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。
首先用手工计算,然后用MATLAB 函数conv(x,y)编程验证。人工计算序列x(n)、h(n)的卷积结果并与计算机计算结果相比较,给出笔算和计算机计算的结果对照表,画出图形。
(1)写出程序代码
a=[-2 0 1 -1 3]; %输入序列表达式a
b=[1 2 0 -1]; %输入序列表达式b
c=conv(a,b); %列a 和序列b 卷积可得c
M=length(c)-1; %设定的长度
n=0:1:M; %界定n 的取值
stem(n,c); %画出c 关于自变量n 是函数图像
xlabel('n'); ylabel('幅度'); %标出横纵坐标
(2)仿真图形及相关分析
2、参考教材P14页,使用通用卷积convu 函数,计算如下卷积
已知h(n)=R6(N-4),x(n)=2R3(N-3),计算y(n)=x(n)*h(n)编程实现并在一幅图内分别画出h(n),x(n),y(n)
,
标好横坐标与纵坐标。 Subplot(2,2,1) stem()
(1) 写出程序代码
第一块代码:
function [y,ny]=convu(x,nx,h,nh)
nys=nh(1)+nx(1);nyf=nh(end)+nx(end);
y=conv(h,x);ny=nys:nyf;
第二块源代码:
x=2*ones(1,3);nx=3:5;
h=ones(1,6);nh=4:9;
[y,ny]=convu(x,nx,h,nh) %调用通用卷积函数,返回两个值
subplot(3,1,1); %分模块画图
stem(nx,x,'.' );
xlabel('nx' ); ylabel('x(n)');
subplot(3,1,2);
stem(nh,h,'*');
xlabel('nh' ); ylabel('h(n)');
subplot(3,1,3);
stem(ny,y,'-' );
xlabel('ny' ); ylabel('y(n)');
(2)仿真图形及相关分析
3、编写教材P31第15题的MATLAB 程序,标出关键语句的含义,并画出输入和输出图形。
(1)写出程序代码
ys=0; %系统的初始状态为0
xn=[1,2,3,4,2,1];
A=[1,1/2];B=[1,0,2];
xi=filtic(B,A,ys); %由初始条件计算等效初始条件的输入序列xi
yn=filter(B,A,xn,xi); %调用filter 解差分方程,求系统输出信号y(n)
n=0:length(yn)-1;
stem(n,yn,'.' );
title('(a)');xlabel('n' );ylabel('y(n)') ;
(2)仿真图形及相关分析
4、编写教材P32第18题的MATLAB 程序,标出关键语句的含义,并画出输入和输出图形。
(1)写出程序代码
hn1=[1 1/2 1/4 1/8 1/16 1/32,zeros(1,89)];
hn2=[1 1 1 1 1 1];
hn3=[1/4,1/2,1/4,zeros(1,97)]; %hn3的取值,前三个为1/4,1/2,1/4,后面的97位均为1 vn=conv(hn1,hn2);
vn=vn+hn3;
ys=0;。 %初始状态为0
B=[1,1];
A=[1,-0.9,0.81]; %写出A 、B 的系数
n=0:99;
yn=filter(B,A,vn); %求系统的输出信号yn
stem(n,yn,'.' );
(2)仿真图形及相关分析
(三)心得体会及总结。
通过本次试验,我学会了利用Matlab 工具来进行编程计算卷积,掌握了离散卷积的计算方法和线性常系数差分方程的迭代解法。在实验过程中,我学会了Matlab 的基本操作和其语言的实现原理。但也存在一些问题,比如第二个实验的编程必须要用两个.m 函数才能实现输出两个变量,我希望自己能在理解理论知识的基础上,在实际操作上也有所提高,学会更多。