基于Matlab 的数字信号处理实验报告.docx

上传人:b****0 文档编号:9031935 上传时间:2023-05-16 格式:DOCX 页数:25 大小:991.39KB
下载 相关 举报
基于Matlab 的数字信号处理实验报告.docx_第1页
第1页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第2页
第2页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第3页
第3页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第4页
第4页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第5页
第5页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第6页
第6页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第7页
第7页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第8页
第8页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第9页
第9页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第10页
第10页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第11页
第11页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第12页
第12页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第13页
第13页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第14页
第14页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第15页
第15页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第16页
第16页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第17页
第17页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第18页
第18页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第19页
第19页 / 共25页
基于Matlab 的数字信号处理实验报告.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Matlab 的数字信号处理实验报告.docx

《基于Matlab 的数字信号处理实验报告.docx》由会员分享,可在线阅读,更多相关《基于Matlab 的数字信号处理实验报告.docx(25页珍藏版)》请在冰点文库上搜索。

基于Matlab 的数字信号处理实验报告.docx

基于Matlab的数字信号处理实验报告

第1章MATLAB基本知识

MATLAB是一种面向科学和工程计算的高级语言,包含的几十个工具箱,覆盖了通信、

自动控制、信号处理、图像处理、生命科学等科技领域,现已成为国际公认的最优秀的科技

界应用软件。

该软件的特点是:

强大的计算功能、计算结果和编程可视化及极高的转换效率。

本章目的是帮助新用户在领略MATLAB非凡能力的同时能轻松跨越MATLAB的门槛。

§1.1MATLAB语言的基本使用环境

一.MATLAB的安装MATLAB5.3版本仅有一张光盘,运行其上的安装文件setup.exe,则可以按提示安装整

个MATLAB系统。

MATLAB6.1版本有两张光盘,将其中的程序盘插入驱动器,运行其上

的安装文件setup.exe,则可以按提示安装整个MATLAB系统。

MATLAB6.x与以前的版本相比,在界面上的变化是很大的,以前的版本只给出一个又

一个命令窗口,MATLAB6.1的程序界面,除了其右侧的CommandWindow(命令窗口)之外,

还有LaunchPad(程序调用板)和CommandHistory(命令的历史记录)两个子窗口,以及

Workspace(工作空间管理程序)和CurrentDirectory(当前目录管理程序)等,使MATLAB的

操作更容易、方便了。

二.MATLAB5.3的操作步骤

由于实验室安装的是MATLAB5.3,下面我们介绍MATLAB5.3的操作步骤。

双击桌面

的MATLAB5.3的图标,如图1-1,将进入MATLAB5.3的CommandWindow(命令窗口),

如图1-2。

1.帮助[Help]选项

HelpWindows打开分类帮助窗

HelpTips打开函数文件命令帮助窗

HelpDesk打开以超文本形式存储的帮助文件主页

ExamplesandDemos打开演示窗主页

AboutMATLAB注册图标、版本、制造商和用户信息

选择[Help]中不同的类别,用户可以从相关的帮助信息得到帮助。

2.用户目录的设置

(1).必须建立用户自己的工作目录

MATLAB完成各种复杂运算、仿真的能力是在严格的目录结构及其驻留文件保证下获得的。

因此应该建立自己的工作目录,用于存放用户自己创建的各种文件和数据。

(2).在路径浏览器中加入用户自己的路径

①可以在命令窗中选中[File:

SetPath]菜单项,在[Path]窗中选中[Addtopath],点击Browse,

在出现的目录中选定所需的目录,便完成设置,退出此菜单前保存。

②也可以在命令窗口选择PathBroser图标,在弹出的PathBroser窗口中选择Path,在

AddtoPath下选中需要加入的目录,如图1-3,完成设置,退出此菜单前保存。

3.建立M脚本文件

所谓M脚本文件,指文件的扩展名是.m的文件。

对于比较简单的问题和一次性的问题,通过CommandWindow(命令窗)直接输入一组指令

去求解,也许比较简单快捷。

但要解决问题所需的指令增多或所用指令结构复杂时,直接在

命令窗输入指令的方法就显得繁琐。

设计M脚本文件来解决此矛盾。

(1).在命令窗[File]下拉菜单中选择New选项中的M--File子项,如图1-4,就会出现M文

件编辑器,如图1-5所示。

(2).把指令全部写在M文件编辑器中,选择[Saveas]存入到用户的目录下,例如选择文件名

为myfile1。

(3).运行M脚本文件。

在CommandWindow(命令窗)中键入myfile1,就能运行该文件,

结果显示在命令窗。

4.建立M函数文件

函数文件的目的是扩展MATLAB功能,即利用MATLAB语言构造了一个新的MATLAB

函数,而且该函数的使用同MATLAB本身提供的库函数是一样的。

例如,函数文件mean.m,用来计算一组向量的平均值。

functiony=mean(x)

%meanaverageormeanvalue

m=length(x);

y=sum(x)/m;

例如在M文件输入:

z=1:

99;

m=mean(z)

运行程序结果为:

m=50

关于函数文件的几点说明:

(1)文件的第一行说明了该函数的名称、输入参数、输出参数。

这一行的有无是区别脚本文

件与函数文件的一个重要标志。

(2)函数的文件名与函数名是相同的。

§1.2数值数组的创建

一.一维数组的创建和寻访

1.一维数组的创建

(1).逐个元素输入法

这是最简单,但又最通用的构造方法。

例:

x=[2pi/2sqrt(3)3+5*j]

x=

2.00001.57081.73213.0000+5.0000i

(2).冒号生成法

这是通过“步长”设定,生成一维“行”数组的方法。

该方法通用格式为:

x=a:

inc:

b

说明:

a是数组的第一个元素;inc是采样点之间的间隔,即步长;若(b-a)是inc的整数倍,则生

成数组的最后一个元素等于b,否则小于b。

inc可以省略,省略时,默认其取值为1,即inc=1;inc可以取正数或负数,若inc取正时,

要保证ab。

2.一维数组的寻访

x=rand(1,5)%产生(1×5)(即:

1行5列)的均匀分布随即数组

x=ones(1,5)%产生(1×5)(即:

1行5列)的数值全部为1的数组

x=zeros(1,5)%产生(1×5)(即:

1行5列)的数值全部为0的数组

x(3)%寻访数组x的第三个元素

x(1:

3)%寻访数组x的前三个元素

x([125])%寻访数组x的第一、二、五个元素组成的子数组

x(find(x>0.5))%寻访由大于0.5的元素构成的子数组

二.二维数组的创建和寻访

1.直接输入法

(1)整个输入数组必须以[]为其首尾

(2)数组的行与行之间必须用分号“;”或回车键[Enter]隔离

(3)数组元素必须由逗号“,”或空格分隔

例:

c=[1,2,5;7,4,9]

c=125

749

2.二维数组的标识

“全下标”标识

A(3,5)表示二维数组A的“第3行第5列”的元素

§1.3数值数组的运算

数值数组及数组运算始终是Matlab的核心内容。

Matlab精心设计的数值数组及其运算目的

在于使计算程序简单、易读、程序指令更接近教科书上的数学计算公式。

§1.4控制流语句

1.for循环语句

其功能是重复执行一条或一组语句的固定次数。

(也可以是零次)

格式:

forexpression(表达式)

statement(描述)

end

循环可以嵌套。

例:

forI=1;5

forj=1:

4

a(i,j)=i+j-1;

end

end

2.while循环语句

其功能是重复执行一条或一组语句的次数,重复次数由某个逻辑条件控制,一般来说其执行

次数是不能预先确知的。

格式:

whileexpression(表达式)

statement(描述)

end

3.if和break语句

if条件语句的功能是:

如果满足某个条件则执行一条或一组语句,否则就不执行其内部语句,

或者执行else后面的语句。

if条件语句的一般格式有两种:

格式一:

ifcondition

statement

end

格式二:

ifcondition

statement1

else

statement2

end

Break语句一般出现在循环语句中,它表示跳出循环体,即结束循环。

§1.5绘图

用于绘图函数中常用的主要包括以下几种:

1.绘图

(1).Plot

plot函数用来绘制二维线性坐标曲线,它的调用格式:

plot(y):

若y为实数向量,将以y为纵坐标,y中对应元素的下标为横坐标来绘制曲线;若

y为复数,将以实部为横坐标、虚部为纵坐标来绘制曲线。

plot(x1,y1,„„):

该格式将绘制x1为横坐标、yn为纵坐标的曲线。

(2).stem

stem函数用来绘制二维离散序列的杆状图,它的调用格式:

stem(y):

以y中对应元素的下标为横坐标来绘制杆状图。

stem(x,y):

该格式将绘制x为横坐标、y为纵坐标的杆状图。

2.设置坐标轴属性

axis函数用于设置当前图形的坐标轴属性,它的调用格式:

axis([xminxmaxyminymax]):

分别设置x轴、y轴刻度的最小值和最大值。

3.分割图形窗口

subplot函数可以将图形窗口分割,以满足用户对图形显示的要求,它的调用格式:

subplot(m,n,p):

将当前的窗口中的坐标轴分割成m行、n列的子坐标轴,选定第p个窗口为当前显示窗口。

4.图形标注函数

(1)title函数用来给图形添加标题,其调用格式为:

title(‘string’):

在图形的正上方添加标题。

(2)xlable、ylable、zlable函数用法相同,都是给坐标轴进行标注的函数,它的调用格式:

xlable(‘string’):

在x轴上用指定的字符串标注。

ylable(‘string’):

在y轴上用指定的字符串标注。

zlable(‘string’):

在z轴上用指定的字符串标注。

(3)text:

在曲线某点处标注:

text(x,y,‘string’):

在点(x,y)处显示字符串。

text(x,y,z,‘string’):

在点(x,y,z)处显示字符串。

第二章基于MATLAB的数字信号处理实验

实验一离散系统时域分析与Z域分析

一.实验目的

(1)熟悉Matlab的主要操作命令;

(2)掌握典型离散信号的特性

(3)掌握离散系统的频率响应

三.实验中调用的函数

eig(x):

求解x矩阵的特征相量和特征值。

fliplr(x):

是将x矩阵的列倒序。

[h,w]=freqz(b,a):

系统函数的频率响应h,w表示0~π范围,其中b表示系统函数的

分子系数,按降幂顺序排列,a表示系统函数的分母系数,按降幂

顺序排列。

20*log10(abs(h)):

对系统函数的的频率响应h取绝对值得到幅频响应h(分贝)

angle(h):

是对系统函数的的频率响应h求取相频响应

四.实验内容

1.熟悉Matlab的主要操作命令

例1:

求矩阵的特征相量和特征值。

程序如下:

A=[010;103;521];%矩阵的写法,每行结束用;表示

[XD]=eig(A)%eig(A)是求解A矩阵的特征相量和特征值

运行结果:

X=

-0.3887+0.0965i-0.3887-0.0965i-0.1674

0.4191-0.6436i0.4191+0.6436i-0.6371

0.2142+0.4515i0.2142-0.4515i-0.7524

D=

-1.4029+1.3078i00

0-1.4029-1.3078i0

003.8058

例2:

编写函数,可对信号移位和反折。

编写一名为sigshift.m的函数文件

function[y,n]=sigshift(x,m,n0)

%Implementsy(n)=x(n-n0)

n=m+n0;y=x;

编写一名为sigshift.m的函数文件。

%Implementsy(n)=x(-n)

function[y,n]=sigfold(x,n)

y=fliplr(x);n=-fliplr(n);%fliplr(x)是将x矩阵的列倒序。

调用上述函数的主程序如下:

%h(n)=(0.9)^n*u(n)

n=0:

50;%n的取值范围是0到50,按1递增的。

h=((0.9).^n);

figure

(1)%创建一个新的图像窗口

subplot(2,2,1)%是将当前的图像窗口分割成2行2列,显示第1个图像

stem(n,h);%将h用杆图形式表示

axis([-70,70,0,1])%设定显示图形的x轴的范围是-70~70,y轴的范围是0~1

title('x(n)')%图像的题名是x(n)

gridon%在图像上显现网格

subplot(2,2,2)

[h2,n2]=sigshift(h,n,20);%调用前面编辑的sigshift函数(信号移位)

stem(n2,h2);

axis([-70,70,0,1])

title('sigshift:

x(n-20)')

gridon

subplot(2,2,3)

[h3,n3]=sigshift(h,n,-20);

stem(n3,h3);

axis([-70,70,0,1])

title('sigshift:

x(n+20)')

gridon

subplot(2,2,4)

[h1,n1]=sigfold(h,n);%调用前面编辑的sigfold函数(信号反折)

stem(n1,h1);

axis([-70,70,0,1])

title('sigfold:

x(-n)')

gridon

例3:

给定一因果系统

求出并绘制H(Z)的幅频响应与相

频响应。

程序如下:

%H(z)=(1-z^-1)/(1-sqrt

(2)*z^-1+0.9z^-2)

b=[1,-1];%系统函数H(Z)的分子系数,按降幂顺序

a=[1,-sqrt

(2),0.9];%系统函数H(Z)的分母系数,按降幂顺序

[h,w]=freqz(b,a);%系统函数的频率响应h,w表示0~π

am=20*log10(abs(h));%对系统函数的的频率响应h取绝对值得到幅频响应h(分贝)

subplot(2,1,1);

plot(w,am)%在0~π范围内连续画出系统函数幅频响应h的曲线

title('Amplitude')

ph=angle(h);%angle(h)是对系统函数的的频率响应h求取相频响应

subplot(2,1,2)

plot(w,ph)%在0~π范围内连续画出系统函数相位响应ph的曲线

title('Phase')

结果如下:

2.上机实验内容

(1)数组的加、减、乘、除和乘方运算。

输入A=[1234],B=[3456],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B,用stem语句画出A,B,C,D,E,F,G。

A=[1234];

B=[3456];

stem(A)

stem(B)

C=A+B;

stem(C)

D=A-B;

stem(D)

E=A.*B;

stem(E)

F=A./B;

stem(F)

G=A.^B;

stem(G)

A

B

C

D

E

F

G

(2)用Matlab实现下列序列:

n=0:

15;

x=(0.8.^n);

stem(n,x)

n=0:

15

x=(exp((0.2+3j)*n))

stem(n,x)

n=0:

15

x=(3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi))

stem(n,x)

n=0:

63

x=(3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi))

stem(n,x)

 

(3)绘出下列时间函数的图形,对x轴、y轴以及图形上方须加适当的标注。

f=1

fs=10

t=10

n=0:

(fs*t)

x=(sin(2*pi*f/fs*n));

plot(n,x);

xlable('time:

n');

ylable('x(t)');

五.实验思考题

1.在MATLAB命令窗里运行demo指令,运行其中样例程序,体会MATLAB强大功能。

辑MATLAB的库函数要点是什么?

本文是通过网络收集,如有侵权请告知,我会第一时间处理。

.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2