数字信号处理实验总结

2019-08-31 21:11

实验一 离散信号及运算

一、 实验目的

1. 掌握MATLAB语言的基本功能及实现方法; 2. 掌握MATLAB中各种常用序列的表示和显示方法; 3. 熟练运用MATLAB进行离散信号的各种运算。 二、 实验原理

我们所接触的信号大多为连续信号,而计算机及其他设备处理的大多为数字信号。为了便于处理,往往要对信号进行处理使之变成离散数字信号。对信号进行时间上的量化(即采样)是对信号作数字化处理的第一个环节,要求理解采样的原理和采样的性质,知道采样前后信号的变化及对离散信号和系统的影响。 三、 实验内容

1、用MATLAB实现下列序列,并画出图形: ① 单位采样序列移位,x(n)??(n?3),0?n?10; 提示:实现单位采样序列:?(n)?{n=0:10;

x=[zeros(1,3),1,zeros(1,7)]; stem(n,x);

10.90.80.70.60.50.40.30.20.100123456789101n?0,可通过以下语句实现:x=zeros(1,N);x(1)=1; 0n?0

② 单位阶跃序列移位,x(n)?u(n?3),0?n?10 提示:实现单位阶跃序列:u(n)?{1n?0,可通过以下语句实现:x=ones(1,N); 0n?0n=0:10; x=[zeros(1,3),1,ones(1,7)]; stem(n,x)

10.90.80.70.60.50.40.30.20.10012345678910

③正弦序列,

Ts=0.005;

x(n)?A*sin(2*?*f*n*Ts),0?n?10,其中A=2;f=10;

A=2; f=10; Ts=0.005; n=0:10; x=A*sin(2*pi*f*n*Ts); stem(n,x)

21.81.61.41.210.80.60.40.20012345678910

nx(n)?0.9,0?n?10 ③ 指数序列,

n=0:10; x=0.9.^n; stem(n,x)

10.90.80.70.60.50.40.30.20.10012345678910

④ 复指数序列,

x(n)?e0.05+j*pi/4*n,?20?n?20,画出该序列的实部、

虚部,幅值和相位。 提示:可通过下列语句实现: 实部real(x),虚部imag(x),幅值abs(x),相位angle(x) n=-20:20; x=exp(0.05+j*pi/6*n);

xr=real(x); xi=imag(x); xm=abs(x); xa=angle(x); figure;

subplot(411);stem(n,xr);title('实部'); subplot(412);stem(n,xi);title('虚部'); subplot(413);stem(n,xm);title('模'); subplot(414);stem(n,xa);title('相角');

实部20-2-2020-2-20210-2050-5-20-15-10-505101520-15-10-50相角5101520-15-10-50模5101520-15-10-50虚部5101520

2、用MATLAB实现两个序列相加: 序列1:x1=[1 0.5 0.3 0],n1=1:4;

序列2:x2=[0.2 0.3 0.4 0.5 0.8 1],n2=1:6;实现x=x1+x2,n=1:8,并画出x的图形。

提示:MATLAB中可用算术运算符“+”实现序列相加,但两个序列的长度必须相等。如果序列长度不等,或者长度虽然相等但采样的位置不同,就不能运用“+”了。当两序列的长度不等或位置不对应时,首先应使两者位置对齐,然后通过zeros函数左右补零使其长度相等后再进行相加。 x1=[1,0.5,0.3,0];x2=[0.2,0.3,0.4,0.5,0.8,1]; n1=1:4; n2=1:6; n=1:8; x3=[x1,0,0]; x=x3+x2; y=[x,0,0]; stem(n,y)

1.41.210.80.60.40.2012345678

3、用MATLAB实现序列的反转:

实现y(n)?x(?n),序列x(n)采用x(n)?u(n?3),0?n?10,并画出y(n)的图形。

提示:可利用fliplr(x) 函数,例如:x=[1 2 3 4];y=fliplr(x);结果为y=[4 3 2 1],要实现y(n)?x(?n)对fliplr(x) 函数进行合理运用。 n=0:10;

x=[zeros(1,3),1,ones(1,7)]; y=fliplr(x); n1=-fliplr(n); stem(n1,y);

10.90.80.70.60.50.40.30.20.10-10-9-8-7-6-5-4-3-2-10

4、序列的尺度变换,实现插值和抽取:

已知序列x(n)?{1,2,3,4,5,6,7,8},-4?n?3用MATLAB分别实现下列尺度变换。

y1(n)?x(2n){y2(n)?x(n/2)

提示:可对序列x(n)的下标进行取余计算,余数为零即为插值和抹去的点,函数如下:mod(nx,m),nx为序列x(n)的下标,m为插值或抽取的倍数。 clear all;

x=[1,2,3,4,5,6,7,8];

n=-4:3;n1=n(1:2:length(n));

y1=x(1:2:length(x)); subplot(211); stem(n1,y1); axis([-5 3 0 7]); y2=zeros(1,16); for k=1:8

y2(2*k)=x(k); End;

subplot(2,1,2);stem(-8:6,y2(2:end));

6420-586420-8-6-4-20246-4-3-2-10123

四、 思考题

1. 若用C语言实现有限长序列的加法,编程如何实现?与MATLAB相比,优缺点,繁简度如何?

2. MATLAB中可用算术运算符“+”实现序列相加,用算术运算符“*”实现序列相乘,试问用MATLAB求任意序列相加、相乘时,分别应注意什么? 3. 分析stem(n,x)和plot(t,x)函数使用时的异同点。


数字信号处理实验总结.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:汽修毕业论文 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: