- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字信号处理实验总结
实验一 离散信号及运算
实验目的
掌握MATLAB语言的基本功能及实现方法;
掌握MATLAB中各种常用序列的表示和显示方法;
熟练运用MATLAB进行离散信号的各种运算。
实验原理
我们所接触的信号大多为连续信号,而计算机及其他设备处理的大多为数字信号。为了便于处理,往往要对信号进行处理使之变成离散数字信号。对信号进行时间上的量化(即采样)是对信号作数字化处理的第一个环节,要求理解采样的原理和采样的性质,知道采样前后信号的变化及对离散信号和系统的影响。
实验内容
1、用MATLAB实现下列序列,并画出图形:
单位采样序列移位,;
提示:实现单位采样序列:,可通过以下语句实现:x=zeros(1,N);x(1)=1;
n=0:10;
x=[zeros(1,3),1,zeros(1,7)];
stem(n,x);
单位阶跃序列移位,
提示:实现单位阶跃序列:,可通过以下语句实现:x=ones(1,N);
n=0:10; x=[zeros(1,3),1,ones(1,7)]; stem(n,x)
③正弦序列,,其中A=2;f=10;=0.005;
A=2; f=10; Ts=0.005; n=0:10;
x=A*sin(2*pi*f*n*Ts); stem(n,x)
指数序列,
n=0:10; x=0.9.^n; stem(n,x)
复指数序列,,画出该序列的实部、虚部,幅值和相位。
提示:可通过下列语句实现:
实部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(相角);
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)
3、用MATLAB实现序列的反转:
实现,序列x(n)采用,并画出y(n)的图形。
提示:可利用fliplr(x) 函数,例如:x=[1 2 3 4];y=fliplr(x);结果为y=[4 3 2 1],要实现对fliplr(x) 函数进行合理运用。
n=0:10;
x=[zeros(1,3),1,ones(1,7)]; y=fliplr(x);
n1=-fliplr(n); stem(n1,y);
4、序列的尺度变换,实现插值和抽取:
已知序列用MATLAB分别实现下列尺度变换。
提示:可对序列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));
思考题
若用C语言实现有限长序列的加法,编程如何实现?与MATLAB相比,优缺点,繁简度如何?
MATLAB中可用算术运算符“+”实现序列相加,用算术运算符“*”实现序列相乘,试问用MATLAB求任意序列相加、相乘时,分别应注意什么?
分析stem(n,x)和plot(t,x)函数使用时的异同点。
实验二 离散时间系统的表达及计算
文档评论(0)