信号处理实验一用matlab描述基本信号.docx
- 文档编号:8554075
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:17
- 大小:62.75KB
信号处理实验一用matlab描述基本信号.docx
《信号处理实验一用matlab描述基本信号.docx》由会员分享,可在线阅读,更多相关《信号处理实验一用matlab描述基本信号.docx(17页珍藏版)》请在冰豆网上搜索。
信号处理实验一用matlab描述基本信号
工程大学
实验报告
实验名称:
用matlab描述基本信号
班级:
电子信息工程4班
学号:
姓名:
实验时间:
2016年10月10日
成绩:
________________________________
指导教师:
栾晓明
实验室名称:
数字信号处理实验室
工程大学实验室与资产管理处制
实验一用matlab描述基本信号
一、冲激信号
1、原理:
最简单的信号是(移位的)单位冲激信号:
δ[n-n0]=
(3.1)
在MATLAB中产生冲激信号,必须先确定所关注信号部分的长度。
如果准备用冲激信号δ[n]来激励因果LTI系统,可能需要观察从n=0到n=L-1总共L个点。
若选择L=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
error('参数必须满足n1<=n0<=n2')
end
n=[n1:
n2];
%x=[zeros(1,(n0-n1)),1,zeros(1,(n2-n0))];
x=[(n-n0)==0];
以上函数文件可以产生指定区间的冲激移位脉冲。
例1—1:
调用这个函数文件生成并绘制:
x(n)=2δ[n+2]-δ[n-4]-5≤n≤5
程序
%x(n)=2*delta(n+2)-delta(n-4),-5<=n<=5
n=[-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)函数x1[n]=0.9δ[n-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)函数x2[n]=0.8δ[n]
n=[-15:
15];
x=0.8*impseq(0,-15,15);
stem(n,x);
title('x2序列图')
ylabel('x(n)')
xlabel('n')
(3)函数x3[n]=1.5δ[n-333]
n=[330:
350];
x=1.5*impseq(333,330,350);
stem(n,x);
title('x3序列图')
ylabel('x(n)')
xlabel('n')
(4)函数x4[n]=4.5δ[n+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和相位φ。
x[n]=Acos(ω0n+φ)
产生并绘出下列每一个序列。
使用MATLAB的向量功能求解此问题,将向量参数赋予余弦(或正弦)函数,再利用一个函数调用。
在每种情形下,应只在指定的区间上展开并相应标注水平n轴。
使用stem指令显示每个序列。
2、实验容
(1)x1[n]=sin(πn/17)0≤n≤25
L=26;
%区间长度围
nn=0:
25;
%区间0到25
x1=sin(pi*nn/17);
%x1[n]与自变量关系
xlabel('n');
stem(nn,x1);
(2)x2[n]=sin(πn/17)-15≤n≤25
L=41;
nn=-15:
25;
x2=sin(pi*nn/17);
xlabel('n');
stem(nn,x2);
(3)x3[n]=sin(3πn+π/2)-10≤n≤10
L=21;
nn=-10:
10;
x3=sin(3*pi*nn+pi/2);
stem(nn,x3);
xlabel('n');
ylabe(‘x3’);
(4)x4[n]=cos(
n)0≤n≤50
L=51;
nn=0:
50;
x4=cos(pi*sqrt(23)*nn);
stem(nn,x4);
xlabel('n');
ylabel('x4');
4、结果及分析
由代码及绘制出图形可知,离散正弦信号不一定是周期信号,例如x[4]就是非周期信号,离散正弦信号是周期的需满足w0/2pi为两个整数之比
三、指数信号
1、原理:
(1)衰减的指数信号是数字信号处理中的基本信号。
因为它是线性常系数差分方程的解。
(2)在许多推导中,指数信号序列须在有限区间上求和。
这个和以实验讲义33页式3.3闭合式表示。
(3)指数序列在信号处理中常常出现的一个原因是,时移并不改变其信号特征。
(4)产生指数信号另外的方法是使用差分方程给出的递归表示式。
当输入是一个冲激信号的时候,信号是实验讲义33页式3.5差分方程的解。
2、实验容
(1)研究下面的MATLAB函数,看它如何产生离散时间指数信号。
然后使用函数在区间n=0,1,2,…,20上绘出指数信号x[n]=(0.9)n。
指数函数
functiony=genexp(b,n0,L)
%GENEXPgenerateanexponentialsignal:
b^n
%usage:
Y=genexp(B,N0,L)
%Binputscalargivingratiobetweenterms
%N0startingindex(integer)
%Llengthofgeneratedsignal
%YoutputsignalY(1:
L)
if(L<=0)
error('GENEXP:
lengthnotpositive')
end
nn=n0+[1:
L]'-1;%---vectorofindices
y=b.^nn;
%数组乘方
end
函数x[n]=(0.9)n
L=21;
%区间长度
nn=0:
20;
%区间起点与终点
x1=genexp(0.9,0,21);
%调用函数
stem(nn,x1)
xlabel('n')
ylabel('x1')
(2)在许多推导中,指数信号序列anu[n]须在有限区间上求和。
这个和以下面闭合式表示:
a≠1
(3.1)
使用
(1)部分中的函数产生一个指数信号然后对其求和;将结果与(3.3)式比较。
a.用公式求和
y1=((1-0.9^21)/(1-0.9))
%将a数值代入3.1式,对指数信号序列求和
y1=
8.9058
b.直接求和
s=0;
%直接对指数信号序列求和,验证式3.1
fori=0:
20
s=s+0.9^i;
end
s
s=
8.9058
结果分析:
由y1及s数值相等可以公式(3.1)对于序列求和计算的正确性
(3)指数序列在信号处理中常常出现的一个原因是,时移并不改变其信号特征。
证明一有限长指数信号满足移位关系:
y[n]=ay[n-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.5314
0.4783
0.4305
0.3874
结果分析:
由两组序列值比较可知,时移并不改变信号特征
(4)产生指数信号另外的方法是使用差分方程给出的递归表示式。
当输入x[n]是一个冲激信号的时候,信号y[n]=anu[n]是下面差分方程的解:
y[n]-ay[n-1]=x[n],初始条件y[-1]=0
(3.3)
由于假定差分方程以因果方式递归(即n增大),n=-1的初始条件是必需的。
用MATLAB的filter函数可实现差分方程。
使用filter函数产生与(a)部分号相同的信号(即a=0.9)。
函数filter的用法如下所示
yout=filter(b,a,xin)
假设描述离散系统输入与输出关系的线性常系数差分方程为
那么
和
是差分方程中的系数组成的向量,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、原理:
产生和处理实值信号并将其转化成复值信号非常有用,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分解为实部以及虚部分别绘制图形的方法
五、复指数信号
1、原理:
实指数信号表示式可以扩展成包含正弦信号和余弦信号的复指数信号形式。
这些信号构成了傅里叶变换的基础。
2、实验容
(1)在MATLAB中,复信号是实指数信号的自然扩展。
这样参数a可以用来作为一个复数产生这些信号。
再用Euler公式表示复指数信号(以单一形式给出信号):
x[n]=(z0)n=
=rnejθn=rn(cosθn+jsinθn)
(4.1)
此处z0=rejθ=r∠θ。
使用这一关系式产生z0=0.9∠45°时的复指数信号。
绘出区间0≤n≤20上的x[n]的实部和虚部。
注意z0的幅角控制正弦信号的频率。
nn=0:
20;
%自变量区间
xx=0.9.^(nn).*(cos((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)中复指数函数实部与虚部对应关系
此时θ为45°
nn=0:
20;
xx=0.9.^(nn).*cos((pi./4).*nn);
yy=0.9.^(nn).*sin((pi./4).*nn);
plot(xx,yy)
将θ改为18°
nn=0:
20;
xx=0.9.^(nn).*cos((pi./10).*nn);
yy=0.9.^(nn).*sin((pi./10).*nn);
plot(xx,yy)
结果分析:
由matlab绘制出的复指数信号实部及虚部的对应关系很容易知道结果为螺线线,比较螺线线在θ为18°和45°时的区别,可以得到θ数值越小,螺线线图越好
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 处理 实验 matlab 描述 基本