
讯号与系统实验二总结报告.docx
7页讯号与系统实验二总结报告 实验二离散时间讯号的时域分析 0900210308 陈文鑫 1.实验目的 (1)学习matlab软体及其在讯号处理中的应用,加深对常用离散时间讯号的理解 (2)利用matlab产生常见离散时间讯号及其图形的显示,进行单运算 (3)熟悉matlab对离散讯号的处理及其应用 2.实验原理 (1)离散讯号的表示:在matlab中,可以用向量(阵列)来表示有限长序列,不过这样的向量并没有包含样本位置的资讯,因此,需要用两个向量(阵列)来表示一个有限长序列,其中一个向量表示序列的值,称为样本向量;另一个向量表示样本的位置(即序列的序号),称为位置向量比如序列在matlab中需要用以下两个向量来表示: n = [-2,-1,0,1,2,3]; x = [2,1,-1,5,2]; 其中向量n表示序号,向量x表示序列的值 当不需要样本位置资讯或者序列从n = 0 开始时,可以只用样本向量表示另外由于记忆体的限制,matlab无法表示无限长序列 (2)离散讯号的基本运算 讯号相加:序列相加是对应样本相加,如果两序列长度不等或者位置向量不同,则不能用算数运算子“+”直接实现相加,必须对位置向量和长度统一处理后再相加。
以下m函式可以实现任意两序列的相加运算: function [y, n] = sigadd(f1,n1,f2,n2) % [y n] = sigadd(f1,n1,f2,n2),add two sequences. % inputs: % f1 ---- the first sequence % n1 ---- index vector of f1 % f2 ---- the second sequence % n2 ---- index vector of f2 % outputs: % y ---- the output sequence % n ---- index vector of y n = min(n1(1),n2(1)):max(n1(end),n2(end)); % index vector of y(n) y1 = zeros(1,length(n)); y2 = y1initialization y1(n >= n1(1) y2(n >= n2(1) y = y1 + y2; 序列的移位:序列移位后,样本向量没有变化,只是位置向量变了。
任意序列的移位可以用以下的m函式实现: function [y,n] = sigshift(x,m,n0) % [y,n] = sigshift(x,m,n0),result of y = x(n-n0); % inputs: % x ---- sequence to be shifted % m ---- the index vector of x % n0 --- shift amount % outputs: % y ---- the output sequence % n ---- the index vector of y y = x; n = m + n0; 序列的反折:序列反折后,样本向量倒置,位置向量倒置且变号以下函式可以实现序列的反折运算: function [y,n] = sigfold(x,m) % [y,n] = sigfold(x,n),result of y(n) = x(-n); % inputs: % x ---- sequence to be folded % m ---- the index vector of x % outputs: % y ---- the output sequence % n ---- the index vector of y y = fliplr(x); n = -fliplr(m); (3)系统零状态响应的求解 系统零状态响应表示为,在matlab中,零状态响应的求解可以用两种方法实现: 求出单位样值响应h(n),然后计算卷积和。
首先用函式impz求出系统的单位样值响应,其呼叫格式为: 其中,h 是单位样值响应的样本序列,n是其位置向量;b、a分别是差分方程右边和左边的係数向量,n可以是单位样值响应的样本个数,此时 n = [0,1,2,…,n-1];n 也可以是一个向量,用来指定所求的样本的位置,此时 n = n 其次,用函式conv计算卷积和,其呼叫格式为: 其中,x,h为做卷积和的两个序列,y是卷积的结果 用函式filter直接求系统的零状态响应,其呼叫格式为: 其中,x是输入序列,y是与x等长的输出序列,b、a分别为差分方程右边和左边的係数向量 实验内容: 1.产生单位阶跃讯号 (用ones 函式) n=0:30; >> u=[ones(1,10) 1 ones(1,20)]; stem(n,u); axis([0 30 0 1.2]); 2.产生指数序列 x(n)等于2乘以负一的n次方再乘以e的n次方 clf; n=0:0.5:5; a=-exp(1); k=2; x=a.^(n)*k; stem(n,x); xlabel(time index n); ylabel(amplitude); axis([0 5 -100 100]); 3.产生一个週期正弦函式 n=0:40; f=0.1; phase=0; a=1.5; arg =2*pi*f*n-phase; x=a*cos(arg); clf; stem(n,x); axis([0 40 -2 2]); grid on; title(sinusoidal sequence); xlabel(tine index in); ylabel(amplitude); axis; 4.n1=-4:2; x=[-4,5,1-2,-3,0,2]; n2=-5:1; y=[6,-3,-1,0,8,7,-2]; n=-5:4; x1=[x zeros(1,10-length(n1))]; x2=[zeros(1,10-length(n1)) x1]; y1=[y zeros(1,10-length(n2))]; y2=x[2]*y[1]; subplot(3,1,1);stem(n,x2); subplot(3,1,2);stem(n,y1); subplot(3,1,3);stem(n,y[2]); 实验总结: 通过本次试验进一步熟悉了matlab的操作,熟悉了m档案的编写及呼叫;学习了matlab软体及其在讯号处理中的应用,加深对常用离散时间讯号的理解。
学会了利用matlab产生常见离散时间讯号及其图形的显示,进行单运算;通过软体的操作验证理论学习的知识,加强了自己动手锻鍊的能力。












