数字信号实验Word文档下载推荐.docx
《数字信号实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字信号实验Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
十四.表附1-14滤波器离散化73
十五.表附1-15其他74
附录二实验中用到的一些子程序75
实验一学习使用MATLAB
实验项目名称:
学习使用MATLAB
实验项目性质:
验证性实验
所属课程名称:
数字信号处理
实验计划学时:
2
一.实验目的
(1)学习使用MATLAB,为以后的数字信号处理实验操作顺利进行打下基础。
二.实验内容和要求
(1)了解MATLAB的基本程序设计原则,常量和变量的用法
(2)掌握MATLAB中对矩阵进行输入、运算和比较的方法
(3)了解循环语句的类型,并掌握循环语句的用法
(4)熟悉M文件的作用,并掌握二维图形的绘制
三.实验主要仪器设备和材料
计算机,MATLAB6.5或以上版本
四.实验方法、步骤及结果测试
关于MATLAB
它是由美国的MathWorks公司推出的一个科技应用软件,它的名字是由MATRIX(矩阵)和LABORATORY(实验室)的前三个字母组合而成
MATLAB是一种高性能的、用于工程计算的编程软件,它把科学计算、结果的可视化和编程都集中在一个使用方便的环境中
优势在于能很容易求解复数数值问题,速度快且容易扩展创建新的命令和函数
主要组成部分:
(1)编程语言:
以矩阵和数组为基本单位的编程语言
(2)工作环境:
包括一系列的应用工具,提供编程和调试程序的环境
(3)图形处理:
包括绘制二维、三维图形和创建图形用户界面(GUI)等
(4)数学库函数:
包含大量数学函数,也包括复杂功能
(5)应用程序接口:
提供接口程序,可使MATLAB与其他语言程序进行交互
典型特点:
(1)语言简洁紧凑,运算符十分丰富,使用方便灵活
(2)既具有结构化的控制语言,又能面向对象编程
(3)语法限制不严格,程序设计自由度大,可移植性好
(4)具有强大的图形功能
(5)包含功能强劲的工具箱
(6)最重要、最受欢迎的特点是它的开放性
(7)典型应用有两方面:
数值计算和符号计算
建模和动态仿真
下面介绍MATLAB的界面、常用命令和使用方法
图1-1MATLAB窗口
菜单栏和工具栏:
位于窗口顶部,用户可以通过它们来执行某些命令
命令窗口:
位于右边空白部分,用户的数据输入和结果运算,都在此窗口进行,是Matlab极为重要的部分,也是用户使用最频繁的部分
工作台和工具箱:
位于主窗口左上部分,双击工具箱或前面的”+”号,就能看到工具箱的各项功能
工作空间:
主窗口的中上部分,可看到Matlab的各个工作变量,新打开Matlab时,只能看到系统提供的默认输出变量ans
历史命令:
主窗口的左下部分,主要保存工作过的变量、表达式等,需要时,用户可以直接提取历史命令在命令窗口中使用
当前工作目录:
主窗口的中下部分,主要保存在当前工作路径下的图形文件和命令文件
一、MATLAB的基本程序设计原则
(1)设置完整的路径,把当前的处理位置设为现在的目录
(2)参数值集中放在程序的开始部分,便于程序维护
(3)若在每行程序的最后输入分号,则执行后结果不会显示在屏幕上;
(4)符号“%”后面的内容、是程序的注解,不作为命令运行
(5)程序尽量模块化,也就是采用主程序调用子程序的方法,将所用子程序和并在一起来执行全部的操作
(6)注意变量的定义
(7)留意各种命令的书写格式
程序的基本组成
%说明部分
清除命令(可选)
定义变量(局部变量和全局变量)
按照顺序行执行的命令语句
控制语句开始
控制语句体
控制语句结束
其他命令(如绘图等)
二、常量和变量
MATLAB中使用的数据有常量和变量
作用标量的实数常量,类似于C语言中的整形常量和实形常量,
常量的表示方法:
十进制数字,可以带正负号和小数点,也可采用科学计数法
如:
1,2.5,0.0033,2e-7,pi,2+3i等
变量以其名称在操作语句中第一次合法出现而定义,无需事先定义。
如果变量已经存在,那么matlab将改变它的内容。
变量命名原则:
(1)变量名必须以字母开头,后面可以是任意的字母、数字或下划线
(2)变量名有效的最大长度是31
(3)变量要区分大小写
特殊的常量和变量
(1)ans缺省变量名,以操作中最近应答作为它的值
(2)pi圆周率
(3)i或j虚数单位
(4)INF正无穷大
(5)nan不定值(或称非数)
(6)versionMATLAB的版本
三、程序的运算符
1、算术运算符:
优先级最高
加法:
+减法:
−乘法:
*
除法:
/ 左除:
\乘方:
^
执行时的优先法则按照以下规则:
(1)表达式从左到右执行
(2)乘方运算具有最高的优先级
(3)乘法和除法运算具有相同的次优先级,加法和减法具有相同的最低优先级
(4)括号可以改变优先次序,由最内层的括号向外执行
例1.1:
>
A=[123;
456;
789];
b=10;
A+b
B=ones(3);
%输入一个3*3阶的全为1的矩阵
A-B
S=A*B%矩阵的乘法
S=
666
151515
242424
r=3;
U=A^r%矩阵的乘方
U=
468576684
106213051548
165620342412
X=[23;
13];
Y=[14;
79];
Z=[25;
68];
W=2*X+Y^3-Z%按顺序执行
W=
311477
8291259
W=(2*X+Y)^3-Z%先计算括号,再计算乘方,最后减去Z
23734145
37296517
W=2*(X+Y)^3-Z%先计算括号,再计算乘方,然后乘以2,最后减去Z
20683425
39146472
关系运算符:
对程序的流程控制非常有用,共6个
小于<大于>小于等于<=
大于等于>=等于==不等于≠(~=)
注:
所有关系运算符连接的两个操作数必须或者同维、同大小,或者其中一个为标量。
有一个操作数是标量时,关系运算符把标量和另一个操作数的每个元素进行比较。
对大小相同的两个矩阵,进行关系运算时,是对相应的每一个元素进行比较,如果满足指定关系,则返回1,否则返回0。
例1.2:
A=[12;
34]%输入一个矩阵
A=
12
34
B=[1,0;
3,5]%输入一个矩阵
B=
10
35
A<
B%比较两个矩阵每个元素的大小
ans=
00
01
A>
2%比较矩阵中的每个元素与2的大小关系
11
C=[123;
321;
213];
D=[223;
333;
111];
C==D%比较两个矩阵中的每个元素是否相等,相同为1,不同为0
C~=D%比较两个矩阵中的每个元素是否相等,不同为1,相同为0
C>
=D
C<
=D
011
100
010
101
111
逻辑运算符:
共4个
与&
或|
非~逻辑异或XOR
对操作数的要求和关系运算符一样,逻辑运算符也是对操作数的相应元素一一运算,最后返回一个0-1矩阵,表达式的值为真时,返回1,否则返回0
例1.3:
A=[10;
23];
%输入一个矩阵
B=[11;
22];
A&
B%与运算
A|B%或运算
~A%非运算
xor(A,B)%逻辑异或
四、程序控制语句:
为编写结构化的程序提供了必不可少的条件,不但可以方便用户编程,还可提高程序的效率和可读性
1、for循环语句:
用来执行循环次数已知的情况
调用格式:
forx=初值:
步长:
终值
循环体
end
其中:
变量x称为循环变量,初值、终值和步长可以是标量,也可以是表达式
当循环语句开始执行时,x的值被赋为和初值相同的内容,每执行一次循环体的内容,x的值就会按照步长的大小来改变,如果步长为正数,每执行一次就增加一个步长,否则减小一个步长,一直到变量的值大于或者小于终值,for语句循环结束,继续执行结束语句下面的命令。
当步长省略不写时,系统默认为1。
for循环语句允许嵌套;
每一个“for"
关键字必须和一个“end"
配对
例1.4:
下面for语句中的循环体将执行100次,计算1到100的和
a=0;
fori=1:
100
a=a+i;
end
a
a=
5050
for循环语句可利用嵌套方式使用,如下例计算1到6的乘法表
6
forj=1:
i
A(i,j)=i*j;
A
100000
240000
369000
48121600
5101520250
61218243036
2、while循环语句:
一般用于事先不能确定循环次数的情况时候
while表达式
当表达式的值为真时,执行循环体,当循环体执行完毕后,继续判断表达式的值,如果仍为真,继续执行,如此循环,直到表达式的值为假时终止循环
利用break语句,可在任何时候终止循环(while循环或者for循环)
例1.5:
求10的阶乘
s=1;
n=1;
while(n<
=10)
s=s*n;
n=n+1;
s
s=
3628800
3、条件选择语句if
根据不同逻辑表达式的值来判断程序在执行过程中需要执行那些语句
if逻辑表达式
命令语句体
程序在执行过程中,首先判断逻辑表达式的值,若为真,则执行命令语句体中所有语句,否则,跳过命令语句体,执行结束语句之后的语句
if语句可以通过嵌套的方式使用,但不同的if语句之间不能互相交叉
if逻辑表达式1
语句体1
elseif逻辑表达式2
语句体2
elseif逻辑表达式3
语句体3
……
else语句体
例1.6:
a=100;
b=345;
ifa<
500
c=b/a;
c
c=
3.4500
例1.7:
X=[123;
456;
789];
i=2;
j=3;
ifi==j
X(i,j)=0;
elseifabs(i-j)==1
X(i,j)=-1;
elseX(i,j)=10;
X
X=
123
45-1
789
五、M文件
为代替在MATLAB提示符下输入的MATLAB命令语句,可以把这些命令写入一个文本文件,每当用户输入文件名和它的自变量时,命令语句就由MATLAB执行,当文件中最后一个命令被执行后,MATLAB能再从终端读取命令,这样的文件就叫M文件
1、M文件的类型
两类:
命令(Script)文件和函数(function)文件
(1)、命令文件
主要用途:
使命令输入更简单化(没有输入参数也没有输出参数)
当用户需要重复输入许多相同的命令时,可将它们放在一个命令文件中,每次只要输入文件名,即可得到相同的运行结果
实质是将用户在MATLAB命令窗口中输入的一串命令用另外一个名称来代替
(2)、函数文件
扩充MATLAB的应用范围和满足用户不同的实际应用需求
函数文件可接受输入变量也可返回输出变量
函数文件对变量工作的运算是在其本身的工作空间内进行的,它和MATLAB的命令窗口的工作空间是相互独立的
2、M文本编辑器:
利用MATLAB编程语言所写的程序被称作M文件后缀均为"
.m"
(1)启动编辑器的方法:
(A)直接在MATLAB命令窗口中运行命令编辑
(B)单击MATLAB命令窗口工具栏上的图标
(C)从MATLAB命令窗口种选择菜单"
file"
→“new"
→"
M-file"
。
(2)打开已有M文件的操作方法
(A)直接在命令窗口运行命令editfilenamefilename是待打开的文件名。
(B)单击MATLAB命令窗工具栏上的图标,从弹出对话框中选取需打开的文件
(C)单击命令窗口中的"
open"
子菜单,从弹出对话框中选取需打开的文件
编辑或修改的文件经保存后可单击"
debug"
项中的"
run"
进行运行
或者在命令窗中直接输入此M文件的名称,就可观察运行结果
如果有错误,会在命令窗口中给出相应的提示,根据出错提示找到错误进行修改
3、命令文件
最简单的M文件,不含输入变量和输出变量,主要用途是使命令输入更简单,调用时MATLAB自动执行文件中的全部语句,因此在实现分析问题,解决问题和设计复杂命令等方面十分有用
例1.8:
建立一个命令文件,输出500以内的Fibonacci数
打开文本编辑器,输入如下命令行,保存文件名为"
fibon"
,然后再命令窗口中输入命令"
就能立即看到结果
fibon
f=
Columns1through12
1123581321345589144
Columns13through14
233377
图1-2M文件
4、函数文件:
可以传递参数,接受输入变量和返回输出变量且对变量的运算是在函数本身的工作空间内进行,和MATLAB命令行窗口的工作空间互相独立。
函数文件的第一行必须包含关键字“function"
函数名的命名规则和变量名的命名规则一样:
必须以字母开头,其余部分可以是字母、数字、下划线
例1.9:
建立一个函数文件,计算序列的平均值
打开编辑器输入如下内容,并保存文件名为"
aver.m"
functiona=aver(x)
%AVERAGEmeanvalue
%forvectors,AVERAGEisthemeanvalue
%formatrix,AVERAGEisarowvector
%Non-vectorinputresultsinanerror
[m,n]=size(x);
ifm==1;
m=n;
a=sum(x)/m;
然后在命令窗口中输入变量x。
x=26:
1000;
aver(x)
513
x=20:
100;
aver(x)
60
函数文件的几点说明:
(1)文件的第1行说明了该函数的名称、输入参数、输出参数。
(2)“%”后面的语句用来注释说明,只是为了程序易于理解
(3)文件前面几行由"
%"
开始的语句构成了M文件的帮助信息
(4)变量m,n及y为局部变量,程序执行完后,变量随之消失
(5)函数体包含所有计算和为输出参数附值的代码
(6)调用函数文件时,传递的参数名称可与函数文件中定义的参数名称不相同
六、二维图形的绘制
一、一般步骤
(1)数据的准备
A、选定要表现的范围
B、产生自变量的采样向量
C、计算相应的函数值向量
(2)选定图形窗及其子图的位置
典型命令:
figure
(1)%指定1号图形窗
subplot(2,2,2)%指定2号子图
(3)调用绘图命令
plot(x,y,'
-ro'
)%用红色实线画曲线,数据点类型为o
(4)设置轴的范围与刻度、坐标分格线
axis([0,inf,-1,1])%设置坐标轴的范围
gridon%画坐标分格线
(5)图形注释
title(‘专家系统’)%图名
xlabel(‘x'
);
ylabel(‘y'
)%轴名
二、plot函数的调用格式
二维曲线的绘图命令中,函数plot是最基本,最重要的命令
调用格式1:
poly(x,y)绘制二元组x,y的曲线图形
调用格式2:
plot(y)绘制曲线图形
若y是实数向量,则绘制y与其元素下标所构成的二元组的曲线图
若y的元素为复数,则等价于plot(real(y),imag(y))
若y是矩阵,则按列绘制曲线图,曲线条数等于y矩阵的列数
调用格式3:
plot(x1,y1,x2,y2,……)
功能:
以(x1,y1),(x2,y2)……为二元组,绘制多条曲线
例1.10:
绘制y=sin(x),z=cos(x),w=0.25x-0.5的曲线,
x=0:
pi/100:
2*pi;
y=sin(x)
plot(x,y)%绘制y=sinx的图形
在命令窗口中继续输入以下命令
z=cos(x)
w=0.25*x-0.5;
plot(x,y,x,z,x,w)
三、基本的绘图控制
1、色彩、线型和数据点标志
函数plot可以接受字符串输入变量,以指定不同线型,数据点标志符号以及每条曲线的颜色
plot(x,y,'
s'
)
其中s由1~3个字母组成,用来制定所绘制曲线的色彩,线型和数据点标志。
表1-1PLOT函数参数说明
符号
代表的线型
表示的颜色
—
实线(缺省值)
c(cyan)
青色
--
虚线
m(magenta)
品红色
:
点连线
y(yellow)
黄色
-.
点划线
r(red)
红色
none
不画线
g(green)
绿色
b(blue)
蓝色
w(white)
白色
k(black)
黑色
标记符号
说明
+
加号标记
O
圆圈标记
星号标记
.
点标记
X
叉型标记
S
正方形标记(square)
D
菱形标记(Diamond)
朝上的三角形符号
V
朝下的三角形符号
朝右的三角形符号
<
朝左的三角形符号
P
五角星符号(pentagram)
H
六角星符号(hexagram)
None
无符号标记
2、坐标轴的控制“axis”命令
调用格式1:
axis([xmin,xmax,ymin,ymax])
功能:
xmin,xmax,ymin和ymax分别表示x轴和y轴的最大值和最小值,调用时,要保证最大值大于最小值
调用格式2:
axissquare
使X轴和Y轴的长度相同
调用格式3:
axisequal
使X轴和Y轴的刻度单位相同
调用格式4:
axistight
使坐标轴的区域和图形的区域正好吻合
在对坐标轴的刻度进行标注时,对于线性坐标轴,MATLAB按照数据的范围自动在横轴和纵轴上标出等间距的刻度线
另用户可以修改图形的xtick和ytick属性值来设置刻度线位置
例1.11:
下面我们先按照MATLAB默认的坐标轴刻度生成一幅图形,再改变坐标轴