数字信号处理实验课件最终.docx
- 文档编号:596912
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:41
- 大小:160.35KB
数字信号处理实验课件最终.docx
《数字信号处理实验课件最终.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验课件最终.docx(41页珍藏版)》请在冰豆网上搜索。
数字信号处理实验课件最终
MATLAB语言介绍
一简介
我们都用过Fortran语言或C语言,在这两种语言中,当涉及到矩阵运算或者画图时,编程很麻烦,这方面的例子就不给大家举了。
1980年前后,该语言首创者CleveMoler博士在NewMexico大学讲授线性代数时,看到了用高级语言编程解决工程计算问题的诸多不便,所以构思开发了Matlab软件(MATrixLABoratory矩阵实验室),该软件利用了Molor博士在此前开发的LINPACK(线性代数软件包)和EISPACK(基于特征值计算的软件包)中可靠的子程序,用Fortran语言编写而成,集命令翻译、工程计算功能于一身。
80年代初期,CleveMoler和JohnLittle采用C语言改写了Matlab的内核,不久,他们成立了Mathworks软件开发公司并将该软件正式推向市场。
与Fortran语言和C语言比较,Mtalab的语法规则更简单,更贴近人的思维方式,使得用该软件编写程序有如在便笺上列公式和求解,所以它也叫“演算纸似的科学计算语言”。
现在Matlab新版本已不止停留在工程计算的功能上了,它由主包、Simulink以及功能各异的工具箱组成,以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。
例如,我们可以很方便的设计图形界面、菜单,可以不用编程即可画出在C语言中较难实现的各种按钮、文本框等。
正是由于它的这些优势,使它成为世界上应用最广泛的工程计算软件。
二Matlab软件系统的构成
Matlab软件由主包、Simulink和工具箱三部分组成。
1主包(包括五部分)
(1)Matlab语言:
是一种基于矩阵/数组的高级语言,它具有流程控制语句、函数、数据结构、输入输出,并且具有面向对象的程序设计特性。
用其可以迅速地建立临时性的小程序,也可以建立复杂的大型应用程序。
(2)Matlab工作环境:
该环境给用户提供了管理工作空间内的变量和输入、输出数据的功能,并给用户提供了不同的工具以开发、管理、调试M文件和应用程序。
(3)句柄图形:
是Matlab的图形系统。
它包括一些高级命令,用于实现二维和三维数据可视化、图象处理、动画等功能;还有一些低级命令,用来定制图形的显示及建立应用程序的图形用户界面。
(4)Matlab数学函数库:
该函数库既包含了诸如求和、正弦、余弦、复数运算等简单函数;也包含了矩阵转置、特征值、贝塞尔函数、快速傅立叶变换等复杂函数。
(5)Matlab应用程序接口(API):
是一个同Fortran和C等高级语言进行交互的库。
2Simulink
Simulink是用于动态仿真的交互式系统。
允许用户在屏幕上绘制框图来模拟一个系统,并能够动态地控制该系统。
Simulink的模块库为用户提供了多种多样的功能模块用户可以通过简单的操作建立模型,然后选择合适的的输入源模块(如正弦波)作为输入信号,用适当的接收模块(如示波器)观察系统响应、分析系统特性,如仿真结果不符合要求,则可以修改系统模型的参数,继续进行仿真分析。
3Matlab工具箱
工具箱是开放式的,可以应用,也可以根据自己的需要进行扩展。
目前已有20多种工具箱投入使用,包括信号处理(signalprocessing)、图象处理(imageprocessing)、通信(communications)、控制系统(controlsystem)等等。
三命令窗口(commandwindow)的菜单系统
1File菜单
(1)New子菜单
有三个选项:
“M-file”新建一个M文件。
“figure”新建一个图形窗口。
“Model”新建一个Simulink模型窗口
(2)Open子菜单:
打开一个文件
(3)ShowGUILayoutTool:
显示图形用户界面设计向导。
(4)SetPath:
打开路径浏览器,用于设置路径。
2Edit菜单:
复制、粘贴、剪切、撤消等
3View菜单:
用于控制是否显示工具栏。
4Window菜单:
使用户在打开的窗口之间切换
5Help菜单
另外,它还包含演示程序:
demo和tour
四基本数值运算
1简单矩阵的生成
例:
A=[1,2,3,4;5,6,7,8;8,7,6,5]
或A=[1234
5678
8765]都生成同样的矩阵。
2常用矩阵的生成
(1)zeros生成全零矩阵
如B=zeros(n)生成n*n的全零矩阵
(2)ones生成全一阵
如C=ones(m,n)生成m*n的全1阵
(3)eye生成单位阵
如D=eye(size(A))生成一个与A大小相同的矩阵
3向量的生成
如x1=1:
5
x2=1:
0.5:
3
x3=5:
-1:
1
则可得x1=
12345
x2=
1.00001.50002.00002.50003.0000
x3=
54321
4加减运算
C=A+B或C=plus(A,B)
C=A-BC=minus(A,B)
5乘法运算
矩阵乘C=A*B或C=mtimes(A,B)
数组乘C=A.*BC=times(A,B)
矩阵乘是两个矩阵的线性代数乘,对于非标量A,B,矩阵A的列数必须等于矩阵B的行数。
标量可以和任意大小的矩阵乘。
数组乘是数组A和B的对应元素相乘。
除非一个是标量,否则A和B必须有相同的大小。
例:
A=[121;212;121];
B=[111;111;111];
C=A*BD=A.*B
结果分别为
C=D=
444121
555212
444121
6除法运算
(1)矩阵除法
左除C=A\B或C=mldivide(A,B)
右除C=A/BC=mrdivide(A,B)
通常矩阵左除不等于右除。
如A是方阵,左除等效于A的逆阵左乘B矩阵,即inv(A)*B。
B/A大体等效于B*inv(A)(B右乘A的逆阵),精确地B/A=(A'\B')'
例:
A=[123;010;321];
B=[121]';求C=A\BD=A/B
因为A为3*3矩阵,inv(A)也为3*3矩阵,所以A\B=inv(A)*BA的列数必须等于B的行数.
结果为
C=而D=A/B
-0.7500D=?
?
?
Errorusing==>\
2.0000Matrixdimensionsmustagree.
–0.7500
例:
A=[123;010;321];
B=[456;010;321];求C=A\BD=A/B
结果为
C=D=
0.6250-0.3750-0.37500.57140-0.4286
01.0000-0.000001.00000
1.12501.12502.1250001.0000
(2)数组乘法
数组左除:
C=A.\B或C=mldivide(A,B)
数组右除:
C=A./BC=mrdivide(A,B)
数组左除是数组B和A中对应元素相除,即B(i,j)/A(i,j),
除非其中一个是标量,否则二者大小必须相同。
数组右除是数组A和B中对应元素相除,即A(i,j)/B(i,j),
除非其中一个是标量,否则二者大小必须相同。
例:
A=[123;010;321];
B=[456;010;321];求C=A.\BD=A./B
结果为
c=d=
4.00002.50002.00000.25000.40000.5000
NaN1.0000NaNNaN1.0000NaN
1.00001.00001.00001.00001.00001.0000
注:
NaN不是一个数,当0/0或Inf/Inf时用它作为标记
Inf为表示无穷大的专用变量,当1/0时或浮点溢出用
它作为标记。
7乘方运算
(1)矩阵的乘方运算C=A^p或C=mpower(A,p)
(2)数组的乘方运算 C=A.^BC=power(A,B)
矩阵的乘方运算要求A是一个方阵,且p是一个标量,
A^p的意思是矩阵A的p次方,若p为正整数,则A^p是矩阵A自乘p次,若p为负整数,则首先对A求逆,然后将它自乘p次。
数组的乘方运算是矩阵A和B对应元素的乘方,即A(i,j)的B(i,j)次方。
除非其中一个是标量,否则二者大小必须相同。
例:
A=[123;010;321];求A^2
结果为
ans=
10106
010
61010
例:
A=[123;010;321];
B=eye(3);求C=A.^B D=A.^2E=2.^A
结果为
c=d=e=
111149248
111010121
111941842
8矩阵旋转
B=fliplr(A)矩阵A关于垂直轴沿左右方向进行列维翻转
B=flipud(A)矩阵A关于水平轴沿上下方向进行行维翻转
B=rot90(A)矩阵A逆时针方向旋转90度
B=rot90(A,k)矩阵A逆时针方向旋转k*90度
例:
A=[123;456];B=fliplr(A);C=flipud(A);D=rot90(A,3)
结果为
B=C=D=
32145641
65412352
63
五基本平面做图
1plot函数
plot(x,y)x为横坐标向量,y为纵坐标向量
例:
t=0:
0.1:
4*pi;
y=sin(t);plot(t,y)
结果见图1图1
2subplot函数用于在一个图形窗口显示几幅图
格式:
subplot(m,n,i)
功能:
把图形窗口分割为m行n列子窗口,然后选定第i个窗口为当前窗口。
例:
figure
(1);clf
n=[-5:
5];
x=2*impseq(-2,-5,5)-impseq(4,-5,5);
subplot(3,1,1);stem(n,x);title('impluse');xlabel('n');ylabel('x(n)');
axis([-5,5,-2,3]);
n=[0:
20];
x1=n.*(stepseq(0,0,20)-stepseq(10,0,20));
x2=10*exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20));
x=x1+x2;
subplot(3,1,2);stem(n,x);title('');xlabel('n');ylabel('x(n)');
axis([0,20,-1,11]);
n=[0:
50];
x=cos(0.04*pi*n);
subplot(3,1,3);stem(n,x);title('');xlabel('n');ylabel('x(n)');
axis([0,50,-1.2,1.2]);
结果见图2
图2
实验一序列的产生及绘图
一、实验目的
1.熟悉信号处理软件MATLAB的使用。
2.离散信号的基本运算实现。
3.了解基本序列及复杂序列的产生方法。
4.运用卷积方法观察系统的时域特性。
5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 课件 最终
![提示](https://static.bdocx.com/images/bang_tan.gif)