1、信号处理实验一用matlab描述基本信号哈尔滨工程大学实 验 报 告实 验 名 称: 用matlab描述基本信号 班 级: 电子信息工程4班 学 号: 姓 名: 实 验 时 间: 2016年10月10日 成 绩:_指 导 教 师: 栾晓明 实验室名称: 数字信号处理实验室 哈尔滨工程大学实验室与资产管理处 制实验一 用matlab描述基本信号一、 冲激信号1、 原理:最简单的信号是(移位的)单位冲激信号:n-n0 = (3.1)在MATLAB中产生冲激信号,必须先确定所关注信号部分的长度。如果准备用冲激信号n来激励因果LTI系统,可能需要观察从n = 0到n = L-1总共L个点。若选择L =
2、 31,下面的MATLAB代码将产生一个“冲激信号”。1. L = 31;2. nn = 0 : (L-1);3. imp = zeros(L, 1);4. imp(1) = 1;注意,根据MATLAB编址约定,n=0标号必须对应imp(1)。例:产生移位冲激信号程序(函数文件)function x,n = impseq(n0,n1,n2)% 产生 x(n) = delta(n-n0); n1 =n0 = n2% -% x,n = impseq(n0,n1,n2)%if (n0 n2) | (n1 n2) error(参数必须满足 n1 = n0 = n2)endn = n1:n2;%x =
3、zeros(1,(n0-n1), 1, zeros(1,(n2-n0);x = (n-n0) = 0;以上函数文件可以产生指定区间内的冲激移位脉冲。例11:调用这个函数文件生成并绘制: x(n) = 2n+2-n -4 -5 n 5程序% x(n) = 2*delta(n+2) - delta(n-4), -5=n=5n = -5:5;x = 2*impseq(-2,-5,5)-impseq(4,-5,5);stem(n,x); title(例 2.1a 的序列图) ylabel(x(n); axis(-5,5,-2,3);text(5.5,-2,n)2、 实验内容(1)函数x1n=0.9n-
4、5 n = 1:20;%区间1到20的点x = 0.9*impseq(5,1,20);%调用impseq函数stem(n,x); %绘图title(x1序列图)ylabel(x(n)xlabel(n)(2)函数x2n=0.8n n = -15:15;x = 0.8*impseq(0,-15,15);stem(n,x); title(x2序列图)ylabel(x(n)xlabel(n)(3)函数x3n=1.5n-333 n = 330:350;x = 1.5*impseq(333,330,350);stem(n,x); title(x3序列图)ylabel(x(n)xlabel(n)(4)函数x
5、4n=4.5n+7 n = -10:0;x = 4.5*impseq(-7,-10,0);stem(n,x); title(x4序列图)ylabel(x(n)xlabel(n)3、 结果及分析由实验代码及绘制出图形可以看出,产生移位冲激信号的函数功能正常,可以按要求产生移位冲激信号二、 正弦信号1、原理:另一个非常基本的信号是正弦信号。一般地,完备地描述实正弦信号需要三个参数:振幅A、频率0和相位。xn = Acos(0n + )产生并绘出下列每一个序列。使用MATLAB的向量功能求解此问题,将向量参数赋予余弦(或正弦)函数,再利用一个函数调用。在每种情形下,应只在指定的区间上展开并相应标注水
6、平n轴。使用stem指令显示每个序列。2、实验内容(1) x1n = sin(n/17) 0 n 25L=26;%区间长度范围nn=0:25;%区间0到25x1=sin(pi*nn/17);%x1n与自变量关系xlabel(n);stem(nn,x1);(2) x2n = sin(n/17) -15 n 25L=41;nn=-15:25;x2=sin(pi*nn/17);xlabel(n);stem(nn,x2);(3) x3n = sin(3n + /2) -10 n 10L=21;nn=-10:10;x3=sin(3*pi*nn+pi/2);stem(nn,x3);xlabel(n);yl
7、abe(x3);(4) x4n = cos(n) 0 n 50L=51;nn=0:50;x4=cos(pi*sqrt(23)*nn);stem(nn,x4);xlabel(n);ylabel(x4);4、 结果及分析由代码及绘制出图形可知,离散正弦信号不一定是周期信号,例如x4就是非周期信号,离散正弦信号是周期的需满足w0/2pi为两个整数之比三、 指数信号1、 原理:(1)衰减的指数信号是数字信号处理中的基本信号。因为它是线性常系数差分方程的解。(2)在许多推导中,指数信号序列须在有限区间上求和。这个和以实验讲义33页式3.3闭合式表示。(3)指数序列在信号处理中常常出现的一个原因是,时移并
8、不改变其信号特征。(4)产生指数信号另外的方法是使用差分方程给出的递归表示式。当输入是一个冲激信号的时候,信号是实验讲义33页式3.5差分方程的解。2、 实验内容(1) 研究下面的MATLAB函数,看它如何产生离散时间指数信号。然后使用函数在区间n = 0, 1, 2, , 20上绘出指数信号xn = (0.9)n。指数函数function y = genexp( b, n0, L )%GENEXP generate an exponential signal: bn% usage: Y = genexp( B, N0, L )% B input scalar giving ratio bet
9、ween terms% N0 starting index (integer)% L length of generated signal% Y output signal Y(1 : L)if ( L = 0 ) error(GENEXP: length not positive)endnn = n0 +1 : L - 1; %-vector of indicesy = b . nn;%数组乘方end函数xn = (0.9)nL = 21;%区间长度nn = 0:20;%区间起点与终点x1 = genexp(0.9,0,21);%调用函数stem(nn,x1)xlabel(n)ylabel(
10、x1)(2) 在许多推导中,指数信号序列anun须在有限区间上求和。这个和以下面闭合式表示: , a 1(3.1)使用(1)部分中的函数产生一个指数信号然后对其求和;将结果与(3.3)式比较。a.用公式求和y1=(1-0.921)/(1-0.9)%将a数值代入3.1式,对指数信号序列求和y1 = 8.9058b.直接求和s=0; %直接对指数信号序列求和,验证式3.1for i=0:20 s=s+0.9i;endss =8.9058结果分析:由y1及s数值相等可以公式(3.1)对于序列求和计算的正确性(3) 指数序列在信号处理中常常出现的一个原因是,时移并不改变其信号特征。证明一有限长指数信号
11、满足移位关系:yn = ayn-1, 1 n L-1(3.2)比较向量y(2 : L)和a*y(1 : L-1)。在MATLAB中移位有限长度信号的时候,因为不能自动补零,所以必须留意信号终点。y(2:10) %在命令窗口直接显示指数信号序列y(1:L)ans = 0.9000 0.8100 0.7290 0.6561 0.5905 0.5314 0.4783 0.4305 0.3874 0.9*y(1:9)%在命令窗口显示移位后乘以a的指数信号序列%证明有限长指数信号满足式3.4的移位关系ans = 0.9000 0.8100 0.7290 0.6561 0.5905 0.53140.478
12、3 0.4305 0.3874结果分析:由两组序列值比较可知,时移并不改变信号特征(4)产生指数信号另外的方法是使用差分方程给出的递归表示式。当输入xn是一个冲激信号的时候,信号yn=anun是下面差分方程的解:yn - ayn-1 = xn, 初始条件y-1=0(3.3)由于假定差分方程以因果方式递归(即n增大),n=-1的初始条件是必需的。用MATLAB的filter函数可实现差分方程。使用filter函数产生与(a)部分中信号相同的信号(即a = 0.9)。函数filter的用法如下所示yout = filter(b, a, xin)假设描述离散系统输入与输出关系的线性常系数差分方程为那
13、么和是差分方程中的系数组成的向量,xin是输入信号向量(filter()函数只向y返回与x中样本个数一样多的样本)。a=1,-0.9; %a代表3.3左侧y式的系数对应的向量b=1; %b代表x的系数nn=0:20;xin=zeros(21,1); xin(1)=1;%xin为一冲击信号,yout=filter(b,a,xin);stem(nn,yout);%利用filter函数生成指数%信号序列,并且显示出来3、 结果分析:由这些实验验证了指数序列在有限区间求和的公式,指数序列信号时移特性,以及利用差分方程给出的递归表达式来产生指数信号的方法四、 复值信号1、原理:产生和处理实值信号并将其转
14、化成复值信号非常有用,MATLAB中real函数和imag函数分别代表实部和虚部要想同时绘出实部和虚部,在stem指令之前的subplot(211)和subplot(212)指令会把两个绘图放置在 同一屏幕上,位置为上下关系。2、实验内容:nn = 0 : 25;xx = exp(1i*nn/3); %复指数subplot(211)stem(nn, real(xx)title(实部)xlabel(INDEX(n)subplot(212)stem(nn, imag(xx)title(虚部)xlabel(INDEX(n) )3、结果分析:该实验内容熟悉了复数用matlab分解为实部以及虚部分别绘制
15、图形的方法五、 复指数信号1、 原理:实指数信号表示式可以扩展成包含正弦信号和余弦信号的复指数信号形式。这些信号构成了傅里叶变换的基础。2、 实验内容(1) 在MATLAB中,复信号是实指数信号的自然扩展。这样参数a可以用来作为一个复数产生这些信号。再用Euler公式表示复指数信号(以单一形式给出信号):xn=(z0)n=rnejn=rn(cosn+jsinn)(4.1)此处z0 = rej = r。使用这一关系式产生z0 = 0.945时的复指数信号。绘出区间0n20上的xn的实部和虚部。注意z0的幅角控制正弦信号的频率。nn = 0 : 20;%自变量区间xx = 0.9.(nn).*(c
16、os(pi./4).*nn)+1i.*sin(pi./4).*nn); %有自变量产生xx函数值subplot(211)stem(nn, real(xx)title(实部), xlabel(INDEX(n)subplot(212)stem(nn, imag(xx)title(虚部), xlabel(INDEX(n) )(2)绘出(1)部分中信号虚部与实部的对应点。结果应该是螺旋线。使用不同的角度做实验,的数值越小,绘出的螺旋线图越好。先绘制(1)中复指数函数实部与虚部对应关系此时为45nn = 0 : 20;xx = 0.9.(nn).*cos(pi./4).*nn); yy = 0.9.(nn).*sin(pi./4).*nn); plot(xx,yy)将改为18nn = 0 : 20;xx = 0.9.(nn).*cos(pi./10).*nn); yy = 0.9.(nn).*sin(pi./10).*nn); plot(xx,yy)结果分析: 由matlab绘制出的复指数信号实部及虚部的对应关系很容易知道结果为螺线线,比较螺线线在为18和45时的区别,可以得到数值越小,螺线线图越好
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1