1、李 杨 新技术楼807 Tel:86418052-830哈尔滨工业大学电子工程系,数字信号处理课程实验(一) Matlab使用入门,学习内容 一、概述发展、用途 二、基本定义与基础操作 三、基本矩阵操作 四、MATLAB程序设计 五、MATLAB中的数字信号处理,MATLAB语言的发展,始于20世纪70年代设计者的初衷是为解决“线性代数”课程的矩阵运算问题 调用库程序的接口,Fortran编写 1984年成立MathWorksC编写 现已成为国际控制界公认的标准计算软件 在30多个数学类计算软件中,在数值计算上独占鳌头,什么是MATLAB,一种交互式的以矩阵为基础的系统计算平台,它用于科学和工
2、程的计算与可视化。,优点: MATLAB是一种直译式的高级语言,比其它程序设计语言容易 快速开发 丰富的图形功能和界面开发,MATLAB在美国已经作为大学工科学生必修的计算机语言之一 (C, FORTRAN, ASSEMBLER, MATLAB),MATLAB语言与其它语言的关系仿佛和C语言与汇编语言的关系一样,计算机语言的发展,标志着计算机语言向“智能化”方向发展,被称为第四代编程语言。,应用领域工业研究与开发数学教学,特别是线性代数数值分析和科学计算方面的教学与研究电子学、控制理论和物理学等工程和科学学科方面的教学与研究经济学、化学和生物学等计算问题的所有其他领域中的教学与研究,特点:开放
3、式可扩充结构,matlab 所有函数都是开放的用户可按自己意愿随意更改正因为此功能,使得matlab的应用越来越广泛,我们做什么?,大量的工具箱需要强大的联机检索帮助系统,matlab联机帮助命令,help 功能提供matlab大部分主题的在线帮助信息 help 显示help 主题一览表 help plotxyz 显示有关三维做图指令帮助信息 help 显示特殊字符与符号帮助信息 help help 显示help 的帮助信息,虽然help可以随时提供帮助,但必须知道准确的函数名称。当不能确定函数名称时,help就无能为力了。,Lookfor函数 它可提供通过一般的关键词,搜索出一组与之相关的命
4、令 lookfor fourier 寻找含有傅立叶变换的相关指令:如 FFT Discrete Fourier transform,网络资源,USENET新闻组 MATLAB的新闻组是comp.soft-sys.MATLAB。浏览器指向 http:/ http:/ 网络上的工具箱 http:/ http:/ 哈尔滨工业大学bbs: telnet:/ 上海交通大学bbs: telnet:/ 清华大学bbs mathtools www服务 http:/ http:/ Matlab 大观园: http:/www.matlab-,概述桌面,元素间,行间,亦可分行输入,数值和变量,数值十进制表示:1.3
5、e-3 对大小写敏感:如sin,Sin,SIN 变量名首字符必须是英文(无空格、标点,可使用下划线) 总字符64 预定义变量(右表),运算符和表达式,除法:a/b=b/a 幂运算:ab 注:所有运算定义在复数域 方根运算只返回第一象限解 将复数作为整体处理 允许矩阵元素是复数,矩阵、数组运算,转置 矩阵用符号A来表示和实现 数组非共轭转置A . 四则运算 矩阵+-*/ 数组点乘A.* 右除: A./ 左除: A. 乘方 A.数组各元素分别自乘 A 矩阵为方阵时自乘,数组乘除(,./,.),ab a,b两数组必须有相同的行和列两数组相应元素相乘。 a=1 2 3;4 5 6;7 8 9; b=2
6、 4 6;1 3 5;7 9 10; a.*b ans =2 8 18 4 15 30 49 72 90,inv 矩阵求逆 det 行列式的值 eig 矩阵的特征值 diag 对角矩阵 sqrt 矩阵开方,矩阵的其它运算,矩阵的超越函数,关系运算,常用的关系操作符:、=、 = =、 != 用来比较两个大小相同的数组 比较一个数组和一个标量,逻辑运算,常用的逻辑操作符:&,|,xor 先决逻辑操作:&,| 二进数位逻辑操作:bitand,bitor,bitcmp,bitxor,矩阵操作,利用矩阵下标,MATLAB还提供了子矩阵功能子块赋值:如A(: , m)=1. 空矩阵(用表示)相当于消除相应
7、的矩阵子块. 矩阵的序号编址:按列计数。,矩阵的一些特殊操作,矩阵的变维a=1:12;b=reshape(a,3,4)c=zeros(3,4);c(:)=a(:) 矩阵的变向rot90:旋转; fliplr:上翻; flipud:下翻 矩阵的抽取diag:抽取主对角线;tril: 抽取主下三角;triu:抽取主上三角,矩阵查找和排序,子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。例如: a=10:20; find(a15) ans =7 8 9 10 11 矩阵的排序使用sort函数,它将矩阵按照升序排列。,计算结果的图形表达, x=1:40; y1=sin(pi*x/4);
8、y2=cos(pi*x/8); plot(x,y1,c,x,y2,r),MATLAB的程序设计,一、 matlab的工作模式指令驱动模式 通常matlab以指令驱动模式工作,即matlab命令行方式。 命令行操作时,matlab窗口只允许一次执行一行上的一个或几个语句。,命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。在matlab窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。因此应编辑m文件。,matlab的工作模式 m文件模式将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。 程序
9、文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。,二、m文件的创建,m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。如dos下的edit,windows的记事本和word等。 具体的创建方法: 在matlab命令窗口点击file 菜单new m-file,三、matlab文件的类型,数据文件 .matmat文件是matlab以标准二进制格式保存的数据文件,可将工作空间中有用的数据变量保存下来。mat文件的生成和调用是由函数save和load完成的。 例如:load gatlinimage(X),2. m文件m文件的语法类似于c语言,但
10、又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。m文件有两类独立的m文件 称命令文件可调用m文件 称函数文件 (1). 命令文件 简单的m文件命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。,命令文件包括两部分:注释文件和程序文件 %RANK Number of linearly independent rows or columns. % K = RANK(X) is the number of singular values of X % that are larger
11、 than MAX(SIZE(X) * NORM(X) * EPS. % K = RANK(X,tol) is the number of singular values of X that % are larger than tol.% Copyright (c) 1984-94 by The MathWorks, Inc.s = svd(x); if (nargin = 1)tol = max(size(x) * max(s) * eps; end r = sum(s tol);,程序部分,(2).matlab内置函数文件matlab自定义的函数文件称内置函数文件调用内置函数的方法:使用函
12、数名并给出相应的入口、出口参数即可。例如:sin.m函数用type sin查不到。调用格式:y=sin(2*x)实际应用中:x=0:2*pi/180:2*pi;y=sin(2*x)plot(x,y),又如 sqrt(x) 求x的平方根abs(x) 求x的绝对值det(a) 求行列式的值等等。matlab拥有大量的内置数学函数,供我们在数值运算和符号运算中调用。 (3). 函数m文件 需要输入变量,返回输出变量matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。,对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。这种用
13、matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。,函数m文件的格式:function 返回变量=函数名(输入变量)注释说明语句段程序语句段 特定规则: 函数m文件第一行必须以单词function作为引导词,必须遵循如下形式:function =() m文件的文件名必须是 .m。 程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。,四、matlab的程序结构,matlab语言的程序结构与其它高级语言是一致的,分为顺序结构,循环结构,分支结构。 (1).顺序结构 依次顺序执行程序的各条语句 (2).循环结构 被重复执行的一组语句,
14、循环是计算机解决问题的主要手段。循环语句主要有: for end,语法为:for i = 表达式 (表达式为一个向量)可执行语句end 例:利用for循环求1!+2!+3!+ +5!的值sum=0;for i=1:5pdr=1;for k=1:ipdr=pdr*k;endsum=sum+pdr;end,sum =153, while end 循环while循环将循环体中的语句循环执行不定次数。语法为:while 表达式循环体语句end表达式一般是由逻辑运算和关系运算以及一般运算组成的,以判断循环的进行和停止;只要表达式的值 非0,继续循环;直到表达式值为0,循环停止。,例:用while循环求1
15、100间整数的和sum=0;i=1;while i=100sum=sum+i;i=i+1;endsumsum =5050,(3). 分支结构根据一定条件来执行的各条语句。if else end语句有3种形式 if 表达式执行语句end if 表达式 是语句1else 否语句2end, if 表达式1 多分支语句1elseif 表达式2 语句2elseif 表达式3语句3 else语句nend,这种结构实现了一种多路选择,比较复杂。可替代一般高级语言中的switch-case-end语句,在条件表达式中,通常都是由关系操作符 , =, = =, = 等 逻辑操作符 &,| , 等逻辑函数:isequal 若是相等则为真isempty 若是空矩阵则为真isstr 若是字符串则为真 例:编写m函数,计算函数值x (x=10),MATLAB在数字信号处理中的应用,其他工具箱 实验安排,THE END Thank you!,