matlab 仿真实验

102
MATLAB MATLAB 仿仿仿仿 仿仿仿仿 通通通通通通通通通 通通通通通通通通通 通通通通通通 通通通 通通通通通通 通通通

Upload: moeshe

Post on 17-Mar-2016

196 views

Category:

Documents


5 download

DESCRIPTION

MATLAB 仿真实验. 通信于信息工程学院 电路实验中心 朱治国. 实验一. MATLAB 程序入门和基础应用 安装 启动 与退出 Matlab 的数值计算功能 Matlab 程序设计入门 Matlab 的符号运算功能 Matlab 的可视化功能. MATLAB 简介. MATLAB 是一套功能强大的工程技术人员必备的高端数学类科技应用软件 产生的背景: matlab 语言是由美国的 Clever Moler 博士于 1980 年开发的 , 设计者的初衷是为解决 “ 线性代数 ” 课程的矩阵运算问题 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: MATLAB 仿真实验

MATLABMATLAB 仿真实验仿真实验通信于信息工程学院通信于信息工程学院电路实验中心 朱治国电路实验中心 朱治国

Page 2: MATLAB 仿真实验

实验一 实验一 MATLAB MATLAB 程序入门和基础应用程序入门和基础应用 安装 启动 与退出安装 启动 与退出 MatlabMatlab 的数值计算功能的数值计算功能 MatlabMatlab 程序设计入门程序设计入门 MatlabMatlab 的符号运算功能的符号运算功能 Matlab Matlab 的可视化功能的可视化功能

Page 3: MATLAB 仿真实验

MATLABMATLAB 简介简介MATLABMATLAB 是一套功能强大的工程技术人员必备是一套功能强大的工程技术人员必备的高端数学类科技应用软件 的高端数学类科技应用软件 产生的背景:产生的背景: matlabmatlab 语言是由美国的语言是由美国的 Clever MolerClever Moler博士于博士于 19801980 年开发的年开发的 ,, 设计者的初衷是设计者的初衷是为解决“线性代数”课程的矩阵运算问题为解决“线性代数”课程的矩阵运算问题 MATLABMATLAB = = matrix + laboratorymatrix + laboratory 矩阵实验室矩阵实验室

Page 4: MATLAB 仿真实验

产生的历史产生的历史 美国的美国的 mathworkmathwork 公司于公司于 19841984 年推出年推出

Page 5: MATLAB 仿真实验

其其 DOSDOS 版本(版本( MATLAB1.0MATLAB1.0 )发行于)发行于19841984 年,到现在已经到了年,到现在已经到了 MATLAB7.XMATLAB7.X 。。

MATLABMATLAB 已发展成为由已发展成为由 MATLABMATLAB 语语言、言、 MATLABMATLAB 工作环境、工作环境、 MATLABMATLAB 图图形处理系统、形处理系统、 MATLABMATLAB 数学函数库和数学函数库和MATLABMATLAB 应用程序接口五大部分组成的集应用程序接口五大部分组成的集数值计算、图形处理、程序开发为一体的数值计算、图形处理、程序开发为一体的功能强大的系统 功能强大的系统

Page 6: MATLAB 仿真实验

MATLABMATLAB 基本功能基本功能MATLABMATLAB 具有一下基本功能:具有一下基本功能: 数值计算功能数值计算功能 ,, 矩阵运算功能矩阵运算功能 符号计算功能符号计算功能 图形处理集可视化功能图形处理集可视化功能 可视化建模集动态仿真功能可视化建模集动态仿真功能

Page 7: MATLAB 仿真实验

11 、数值计算功能、数值计算功能 ,, 矩阵运算功能矩阵运算功能 MATLABMATLAB 提供了丰富的矩阵运算处理功能,提供了丰富的矩阵运算处理功能,

是是基于矩阵运算的处理工具基于矩阵运算的处理工具。。 变量变量 矩阵矩阵,运算,运算 矩阵的运算矩阵的运算 例如 例如 C = A + B C = A + B ,, A,B,CA,B,C 都是矩阵都是矩阵 ,, 是是

矩阵的加运算矩阵的加运算 即使一个常数,即使一个常数, Y=5Y=5 ,, MATLABMATLAB 也看做也看做

是一个是一个 1111 的矩阵的矩阵

Page 8: MATLAB 仿真实验

2.2. 符号运算功能符号运算功能 符号运算即用字符串进行数学分析符号运算即用字符串进行数学分析 允许变量不赋值而参与运算允许变量不赋值而参与运算 用于解代数方程、微积分、复合导数、积用于解代数方程、微积分、复合导数、积

分、二重积分、有理函数、微分方程、泰分、二重积分、有理函数、微分方程、泰乐级数展开、寻优等等,可求得解析符号乐级数展开、寻优等等,可求得解析符号解解

Page 9: MATLAB 仿真实验

3.3. 丰富的绘图功能与计算结果的可视化丰富的绘图功能与计算结果的可视化 具有高层绘图功能具有高层绘图功能————两维、三维绘两维、三维绘

图图 具有底层绘图功能具有底层绘图功能————句柄绘图句柄绘图 使用使用 plotplot 函数可随时将计算结果可视函数可随时将计算结果可视

化化

Page 10: MATLAB 仿真实验

4.4. 图形化程序编制功能图形化程序编制功能 动态系统进行建模、仿真和分析的动态系统进行建模、仿真和分析的软件包软件包 用结构图编程,而不用程序编程用结构图编程,而不用程序编程 只需拖几个方块、连几条线,即可只需拖几个方块、连几条线,即可实现编程功能实现编程功能

Page 11: MATLAB 仿真实验
Page 12: MATLAB 仿真实验

5.5. 丰富的丰富的 MATLABMATLAB 工具箱工具箱 MATLABMATLAB 主工具箱主工具箱 符号数学工具箱符号数学工具箱 SIMULINKSIMULINK 仿真工具箱仿真工具箱 控制系统工具箱控制系统工具箱 信号处理工具箱信号处理工具箱 图象处理工具箱图象处理工具箱 通讯工具箱通讯工具箱 系统辨识工具箱系统辨识工具箱 神经元网络工具箱神经元网络工具箱 金融工具箱金融工具箱

Page 13: MATLAB 仿真实验

许多学科,在 MATLAB 中都有专用工具箱,现已有 30 多个工具箱,但 MATLAB 语言的扩展开发还远远没有结束,各学科的相互促进,将使得 MATLAB 更加强大

Page 14: MATLAB 仿真实验

matlabmatlab 能在各领域做什能在各领域做什麽麽 工业研究与开发工业研究与开发 数学教学,特别是线性代数数学教学,特别是线性代数 数值分析和科学计算方面的教学与研究数值分析和科学计算方面的教学与研究 电子学、控制理论和物理学等工程和科学电子学、控制理论和物理学等工程和科学 学科方面的教学与研究学科方面的教学与研究 经济学、化学和生物学等计算问题的所有其他领经济学、化学和生物学等计算问题的所有其他领

域中的教学与研究域中的教学与研究

Page 15: MATLAB 仿真实验

MATLAB MATLAB 工作环境工作环境 在工具栏下的大窗口就是在工具栏下的大窗口就是 MATLABMATLAB 的主的主窗口,在大窗口里设置右窗口,在大窗口里设置右 44 个小窗口个小窗口 (( 这这是桌面平台的默认设置是桌面平台的默认设置 )) ::““ Workspace”Workspace” 、、““ Current Directory”Current Directory” 、、““ Command History”Command History” 、、““ Command WindowsCommand Windows

Page 16: MATLAB 仿真实验

如何使用帮助如何使用帮助 每个软件的掌握过程就是好好看帮助文档每个软件的掌握过程就是好好看帮助文档的过程的过程

Page 17: MATLAB 仿真实验

例、用一个简单命令求解线性系例、用一个简单命令求解线性系统统3x3x11+ x+ x2 2 - x- x3 3 = 3.6= 3.6 xx11+2x+2x22+4x+4x3 3 = 2.1= 2.1 -x-x11+4x+4x22+5x+5x3 3 = -1.4= -1.4A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4];A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4];x=A\bx=A\bx =x = 1.48181.4818 -0.4606-0.4606 0.38480.3848

Page 18: MATLAB 仿真实验

例、用简短命令计算并绘制在 0x6 范围内的 sin(2x) 、 sinx2 、 sin2x 。 x=linspace(0,6) y1=sin(2*x),y2=sin(x.^2),y3=(sin(x))

.^2; plot(x,y1,x, y2,x, y3)

Page 19: MATLAB 仿真实验

用四种方法描述 cos(x)*sin(y)图形

-5

0

5

-4-2

02

4-1

-0.5

0

0.5

1

-5

0

5

-4-2

02

4-1

-0.5

0

0.5

1

-4 -2 0 2 4-4

-3

-2

-1

0

1

2

3

4

Page 20: MATLAB 仿真实验
Page 21: MATLAB 仿真实验

启动启动 MATLABMATLAB 开机执行程序开机执行程序 c:\matlab\bin\matlab.exec:\matlab\bin\matlab.exe 用鼠标双击用鼠标双击 matlabmatlab 图标)图标)

即可打开即可打开 matlabmatlab 命令平台命令平台

Page 22: MATLAB 仿真实验

菜单项菜单项 FileFile ,其功能如下,其功能如下NNewew 建立新文件建立新文件OOpen M-Filepen M-File 打开打开 M-M- 文件文件Open sOpen seelectedlected 打开选定文件打开选定文件Save Workspace Save Workspace AAss 将工作区存为将工作区存为RRun M-Fileun M-File 运行 运行 M-M- 文件文件LLook For Selected ook For Selected 寻找选定文件寻找选定文件PPrintrint 打印打印Print Print SSetupetup 打印设置打印设置EExxit MATLABit MATLAB 退出 退出 MATLABMATLAB

Page 23: MATLAB 仿真实验

MATLABMATLAB 的工作方式 的工作方式 交互式的指令行工作方式和交互式的指令行工作方式和 MM 文件的编程工作方文件的编程工作方式。前者适用于运算过程简单,几条指令即可完式。前者适用于运算过程简单,几条指令即可完成运算的情况,在这种情况下,只需在命令窗口成运算的情况,在这种情况下,只需在命令窗口中逐条输入命令按回车即出现运算结果,比如在中逐条输入命令按回车即出现运算结果,比如在命令窗口中输入如下指令,然后按回车健:命令窗口中输入如下指令,然后按回车健: [(24[(24 ++ 57)*39-88]/13 57)*39-88]/13 马上显示出如下答案: 马上显示出如下答案: ans=236.2308ans=236.2308 这是对于问题较简单的情况,但是当解决的问题这是对于问题较简单的情况,但是当解决的问题变得庞大而复杂时,一次需要执行很多条指令,变得庞大而复杂时,一次需要执行很多条指令,显然用交互式的指令工作方式直接逐条输入指令显然用交互式的指令工作方式直接逐条输入指令是不现实的,这就要用到后一种工作方式:是不现实的,这就要用到后一种工作方式: MM 文文件的编程工作方式。件的编程工作方式。

Page 24: MATLAB 仿真实验

MM 文件的编程工作方式是在命令窗口中调文件的编程工作方式是在命令窗口中调用用 MM 文件,从而执行文件中的多条指文件,从而执行文件中的多条指令,令, MM 文件是由文件是由 MATLABMATLAB 命令行构成的命令行构成的文本文件,以文本文件,以 .m.m 为后缀名。当用户在命令为后缀名。当用户在命令窗口中输入窗口中输入 MM 文件的文件名按回车后,系文件的文件名按回车后,系统将收索该文件并逐条执行该文件中的命统将收索该文件并逐条执行该文件中的命令。它又分为两种形式:命令令。它又分为两种形式:命令 MM 文件和函文件和函数数 MM 文件,分别简称为命令文件和函数文文件,分别简称为命令文件和函数文件 件

Page 25: MATLAB 仿真实验

matlab 与 dos兼容命令 1.dir— 可列出指定目录下的文件和子目录清单 例如 : Dir 可显示当前目录下的所有文件 Dir c:\matlab Dir c:\matlab\*.m

Page 26: MATLAB 仿真实验

2.cd— 可改变当前工作目录 cd _ _ —— 显示当前子目录 cd c:\matlab\toolbox cd _ . . —— 退出当前子目录到上一级目录 cd _\ —— 回到根目录

Page 27: MATLAB 仿真实验

3.type — 可显示指定文件的 全部内容 type myfile.m 与 dos 下的用法完全一样

Page 28: MATLAB 仿真实验

4.delete — 删除指定文件 del abc — 删除当前目录下的 abc 文件 del c:\matlab\aaa.m 注意:只可删除用户文件,其它文件不要轻易删除,否则系统会瘫痪

Page 29: MATLAB 仿真实验

基本概念基本概念 变量:变量: 以字母开头以字母开头 可以由字母、数字和下划线混合组成可以由字母、数字和下划线混合组成 区分字母大、小写区分字母大、小写 字符长度不超过字符长度不超过 3131 个个

Page 30: MATLAB 仿真实验

系统默认的固定变量系统默认的固定变量 ii jj pipi infinf

Page 31: MATLAB 仿真实验

数值数值 每一个数组元素都是双精度表示和存储的每一个数组元素都是双精度表示和存储的 1616 位有效数字位有效数字 默认为默认为 shortshort 格式格式 小数点后小数点后 44 位有效数字位有效数字

Page 32: MATLAB 仿真实验

矩阵矩阵 是是 matlabmatlab 进行数据处理和运算的基本元进行数据处理和运算的基本元素素 大部分运算和命令都是在矩阵的意义进行大部分运算和命令都是在矩阵的意义进行的的 仅有一行或一列的矩阵称为向量仅有一行或一列的矩阵称为向量 学好线性代数学好线性代数

Page 33: MATLAB 仿真实验

数组数组

Page 34: MATLAB 仿真实验

函数函数 给用户提供了丰富且功能各异的函数给用户提供了丰富且功能各异的函数 用户直接调用用户直接调用 AA == sinsin (( bb ))

Page 35: MATLAB 仿真实验

运算符运算符 + - + - * * .* ^ .^ A\B a.\b A’.* ^ .^ A\B a.\b A’ 关系运算符关系运算符 逻辑运算符逻辑运算符 特殊运算符特殊运算符

Page 36: MATLAB 仿真实验

MatlabMatlab 的语句的语句

Page 37: MATLAB 仿真实验

分号的作用:分号的作用: 结尾加分号:将计算结果存入内存,结尾加分号:将计算结果存入内存, 但不显示在屏幕上但不显示在屏幕上结尾不加分号:将计算结果存入内存,结尾不加分号:将计算结果存入内存, 同时显示在屏幕上同时显示在屏幕上

Page 38: MATLAB 仿真实验

矩阵的创建矩阵的创建 直接输入直接输入 利用利用 matlabmatlab内部函数内部函数 外部数据文件(外部数据文件( **.mat.mat )装载)装载

Page 39: MATLAB 仿真实验

向量的生成向量的生成 aa == mm :: nn aa == mm :: pp :: nn

Page 40: MATLAB 仿真实验

矩阵的下标矩阵的下标 AA (( ii ,, jj ) 从) 从 11 开始开始

Page 41: MATLAB 仿真实验

矩阵运算和数组运算矩阵运算和数组运算 加加 减减 矩阵乘矩阵乘 数组乘数组乘 矩阵除矩阵除 数组除数组除

Page 42: MATLAB 仿真实验

MatlabMatlab 常用矩阵运算函数常用矩阵运算函数 SizeSize RandRand LengthLength PordPord sumsum

Page 43: MATLAB 仿真实验

关系运算和逻辑运算关系运算和逻辑运算 > < == >= <= ~=> < == >= <= ~=

& | ~& | ~

Page 44: MATLAB 仿真实验

MatlabMatlab 符号运算功能符号运算功能 symsym

Page 45: MATLAB 仿真实验

MATLABMATLAB 的符号运算功能的符号运算功能 在数学运算中除了数值计算以外,在数学、物在数学运算中除了数值计算以外,在数学、物理、应用工程和科学方面的抽象运算,即计算理、应用工程和科学方面的抽象运算,即计算式中带有式中带有 x,yx,y 等符号变量、表达式的运算,也等符号变量、表达式的运算,也占有相当大的比例。占有相当大的比例。 19931993 年,年, MathWorksMathWorks公司购得了主要针对符号运算的公司购得了主要针对符号运算的 MAPLEMAPLE 使用使用权,并不断扩展符号运算功能,在权,并不断扩展符号运算功能,在 MAPLEMAPLE 的的基础上开发了在基础上开发了在 MATLABMATLAB 环境下实现符号计环境下实现符号计算的工具包算的工具包 Symbolic Math ToolboxSymbolic Math Toolbox ,使其,使其具有了强大的符号运算功能 具有了强大的符号运算功能

Page 46: MATLAB 仿真实验

需要注意的是,在符号运算的整个过程中,所有的需要注意的是,在符号运算的整个过程中,所有的运算均是以符号进行的,即使以数字形式出现的量运算均是以符号进行的,即使以数字形式出现的量也是字符量。举一个简单的例子,在命令窗口中输也是字符量。举一个简单的例子,在命令窗口中输入如下符号表达式按回车:入如下符号表达式按回车: f='sin(x/2)';f='sin(x/2)'; dfdx=diff(f)dfdx=diff(f) 显示如下结果: 显示如下结果: dfdx = 1/2*cos(1/2*x)dfdx = 1/2*cos(1/2*x) 上式是对上式是对 sin(x/2)sin(x/2) 求导的过程,一切都是由符号求导的过程,一切都是由符号变量和符号表达式完成,没有涉及到具体的数值运变量和符号表达式完成,没有涉及到具体的数值运算,其中算,其中 1/21/2 也被当作是字符量 也被当作是字符量

Page 47: MATLAB 仿真实验

使用符号变量前先要进行定义,定义语句是:使用符号变量前先要进行定义,定义语句是: sym sym 或或 syms syms 变量名列表。前者定义一个单一的符号变变量名列表。前者定义一个单一的符号变量,后者可以一次定义多个符号变量。如下例:量,后者可以一次定义多个符号变量。如下例:

sym a sym a 定义定义 aa 为符号变量为符号变量 syms a b c syms a b c 定义定义 a,b,ca,b,c均为符号均为符号变量变量 符号表达式是由符号变量组成的一个表达式,符号符号表达式是由符号变量组成的一个表达式,符号方程是将一个符号表达式通过等号给一个符号变量。方程是将一个符号表达式通过等号给一个符号变量。凡是用到凡是用到 symsym 命令的时候,表达式和方程式对空格命令的时候,表达式和方程式对空格都是敏感的,因此不要随意添加空格符到式中 都是敏感的,因此不要随意添加空格符到式中

Page 48: MATLAB 仿真实验

符号表达式的创建 符号表达式的创建 用用 symsym 命令直接创建符号表达式,这种命令直接创建符号表达式,这种创建方式不需要在前面有任何说明,使用创建方式不需要在前面有任何说明,使用快捷方便。例如:快捷方便。例如: f=sym(‘a+b+c’)f=sym(‘a+b+c’) 在命令窗口中输入上述语句按回车键,出在命令窗口中输入上述语句按回车键,出现以下结果现以下结果 :f= a+b+c:f= a+b+c 。说明已成功将。说明已成功将符号表达式符号表达式 a+b+ca+b+c 赋给变量赋给变量 ff 。。

Page 49: MATLAB 仿真实验

.按照普通书写方式创建符号表达式。它.按照普通书写方式创建符号表达式。它需要在具体创建一个符号表达式之前,将需要在具体创建一个符号表达式之前,将这个表达式所包含的全部符号变量创建完这个表达式所包含的全部符号变量创建完毕。例如:毕。例如: syms a b csyms a b c f=a+b+cf=a+b+c 在命令窗口中输入上述语句后,也出现和在命令窗口中输入上述语句后,也出现和上面相同的结果。创建符号表达式成功 上面相同的结果。创建符号表达式成功

Page 50: MATLAB 仿真实验

matlab matlab 绘图绘图 ————matlabmatlab 语言丰富的图形表现语言丰富的图形表现方法,使得数学计算结果可以方便方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是地、多样性地实现了可视化,这是其它语言所不能比拟的。其它语言所不能比拟的。

Page 51: MATLAB 仿真实验

matlabmatlab 语言的绘图功能语言的绘图功能 不仅能绘制几乎所有的标准图形,而不仅能绘制几乎所有的标准图形,而且其表现形式也是丰富多样的。且其表现形式也是丰富多样的。 matlabmatlab 语言不仅具有高层绘图能力,语言不仅具有高层绘图能力,而且还具有底层绘图能力而且还具有底层绘图能力————句柄绘句柄绘图方法。图方法。 在面向对象的图形设计基础上,使得在面向对象的图形设计基础上,使得用户可以用来开发各专业的专用图形。用户可以用来开发各专业的专用图形。

Page 52: MATLAB 仿真实验

一、二维绘图一、二维绘图一)一) plot —— plot —— 最基本的二维图形指令最基本的二维图形指令plotplot 的功能:的功能: plotplot 命令自动打开一个图形窗口命令自动打开一个图形窗口 FigureFigure 用直线连接相邻两数据点来绘制图形用直线连接相邻两数据点来绘制图形 根据图形坐标大小自动缩扩坐标轴,将数据标尺根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标及单位标注自动加到两个坐标轴上,可自定坐标轴,可把轴,可把 x, y x, y 轴用对数坐标表示轴用对数坐标表示

Page 53: MATLAB 仿真实验

如果已经存在一个图形窗口,如果已经存在一个图形窗口, plotplot 命命令则清除当前图形,绘制新图形令则清除当前图形,绘制新图形

可单窗口单曲线绘图;可单窗口多曲可单窗口单曲线绘图;可单窗口多曲线绘图;可单窗口多曲线分图绘图;线绘图;可单窗口多曲线分图绘图;可多窗口绘图可多窗口绘图

可任意设定曲线颜色和线型可任意设定曲线颜色和线型 可给图形加坐标网线和图形加注功能可给图形加坐标网线和图形加注功能

Page 54: MATLAB 仿真实验

plotplot 的调用格式的调用格式 plot(x) —— plot(x) —— 缺省自变量绘图格式,缺省自变量绘图格式, xx为向量为向量 , , 以以 xx元素值为纵坐标,以相应元素值为纵坐标,以相应元素下标为横坐标绘图元素下标为横坐标绘图 plot(x,y) —— plot(x,y) —— 基本格式,以基本格式,以 y(x)y(x) 的函的函数关系作出直角坐标图,如果数关系作出直角坐标图,如果 yy 为为 n×mn×m的矩阵,则以的矩阵,则以 x x 为自变量,作出为自变量,作出 mm 条曲条曲线线 plot(x1,y1,x2,y2) —— plot(x1,y1,x2,y2) —— 多条曲线绘图多条曲线绘图格式 格式

Page 55: MATLAB 仿真实验

plot(x,y,’s’) —— plot(x,y,’s’) —— 开关格式,开关量开关格式,开关量字符串字符串 ss 设定曲线颜色和绘图方式,设定曲线颜色和绘图方式,使用颜色字符串的前使用颜色字符串的前 1~31~3 个字母,如个字母,如

yellow—yelyellow—yel 表示等。表示等。或或 plot(x1,y1,’s1’,x2,y2,’s2’plot(x1,y1,’s1’,x2,y2,’s2’ ,,…… ))

Page 56: MATLAB 仿真实验

SS 的标准设定值如下:的标准设定值如下:字母 颜色 标点 线型字母 颜色 标点 线型 y y 黄色 黄色 · · 点线点线 m m 粉红 ○ 圈线粉红 ○ 圈线 c c 亮蓝 亮蓝 × ×× × 线线 r r 大红 + +字线 大红 + +字线 g g 绿色 - 实线绿色 - 实线 b b 蓝色 蓝色 星形线 星形线 w w 白色 : 虚线白色 : 虚线 k k 黑色 -黑色 - · (--) · (--) 点划线点划线

Page 57: MATLAB 仿真实验

1. 1. 单窗口单曲线绘图单窗口单曲线绘图例例 11 :: x=[0, x=[0,

0.48,0.84,1,0.91,0.6,0.14]0.48,0.84,1,0.91,0.6,0.14] [ x1, x2, x3, x4, x5, x6, [ x1, x2, x3, x4, x5, x6,

x7,] x7,]plot (x)plot (x)

Page 58: MATLAB 仿真实验

2. 2. 单窗口多曲线绘图单窗口多曲线绘图例例 22 :: t=0:pi/100:2*pi;t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);plot(t,y,t,y1,t,y2)plot(t,y,t,y1,t,y2)

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

y

y1y2

Page 59: MATLAB 仿真实验

3. 3. 单窗口多曲线分图绘图单窗口多曲线分图绘图subplot —— subplot —— 子图分割命令子图分割命令调用格式:调用格式:

subplot(m,n,p)subplot(m,n,p) —— —— 按从左至右,按从左至右, 从上至下排列 从上至下排列

行 列 绘图序号

Page 60: MATLAB 仿真实验

subplot(1,3,1); plot(t,y)subplot(1,3,1); plot(t,y)subplot(1,3,2); plot(t,y3)subplot(1,3,2); plot(t,y3)subplot(1,3,3); plot(t,y2)subplot(1,3,3); plot(t,y2)

0 5 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0 5 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0 5 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 61: MATLAB 仿真实验

subplot(3,1,1);subplot(3,1,1);plot(t,y)plot(t,y)subplot(3,1,2);subplot(3,1,2);plot(t,y3)plot(t,y3)subplot(3,1,3);subplot(3,1,3);plot(t,y2)plot(t,y2)

0 1 2 3 4 5 6 7-1

0

1

0 1 2 3 4 5 6 7-1

0

1

0 1 2 3 4 5 6 7-1

0

1

Page 62: MATLAB 仿真实验

4. 4. 多窗口绘图多窗口绘图 figure(n) —— figure(n) —— 创建窗口函数,创建窗口函数, nn 为窗为窗 口顺序号。口顺序号。t=0:pi/100:2*pi;t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);plot(t,y) —— plot(t,y) —— 自动出现第一个窗口自动出现第一个窗口figure(2)figure(2)plot(t,y1) —— plot(t,y1) —— 在第二窗口绘图在第二窗口绘图figure(3)figure(3)plot(t,y2) ——plot(t,y2) —— 在第三窗口绘图在第三窗口绘图

Page 63: MATLAB 仿真实验

5.5. 图形加注功能图形加注功能将标题、坐标轴标记、网格线及文字注将标题、坐标轴标记、网格线及文字注释加注到图形上,这些函数为:释加注到图形上,这些函数为: title —— title —— 给图形加标题给图形加标题 xlable —— xlable —— 给给 xx轴加标注轴加标注 ylable —— ylable —— 给给 yy 轴加标注轴加标注 text —— text —— 在图形指定位置加标注在图形指定位置加标注 gtext —— gtext —— 将标注加到图形任意位置将标注加到图形任意位置 grid on(off) —— grid on(off) —— 打开、关闭坐标网格线打开、关闭坐标网格线 legend —— legend —— 添加图例添加图例 axis —— axis —— 控制坐标轴的刻度控制坐标轴的刻度

Page 64: MATLAB 仿真实验

例:例: t=0:0.1:10t=0:0.1:10y1=sin(t);y2=cos(t);plot(t,y1,'r',t,y2,'b--y1=sin(t);y2=cos(t);plot(t,y1,'r',t,y2,'b--

');');x=[1.7*pi;1.6*pi];x=[1.7*pi;1.6*pi];y=[-0.3;0.8];y=[-0.3;0.8];s=['sin(t)';'cos(t)'];s=['sin(t)';'cos(t)'];text(x,y,s);text(x,y,s);title('title(' 正弦和余弦曲线正弦和余弦曲线 ');');legend('legend('正弦正弦 ','',' 余弦余弦 ')')xlabel('xlabel(' 时间时间 t'),ylabel('t'),ylabel(' 正弦、余弦正弦、余弦 ')')

Page 65: MATLAB 仿真实验

ezplot ——ezplot —— 符号函数的简易绘图函数符号函数的简易绘图函数ezplotezplot 的调用格式:的调用格式:ezplot(f)ezplot(f) — — 这里这里 ff 为包含单个符号变量为包含单个符号变量 xx 的的

符号表达式,在符号表达式,在 xx 轴的默认范围轴的默认范围 [-2*pi 2*pi][-2*pi 2*pi] 内绘制内绘制 f(x)f(x) 的函数图的函数图ezplot(f,xmin,xmax)ezplot(f,xmin,xmax) — — 给定区间给定区间ezplot(f,[xmin,xmax],figure(n))ezplot(f,[xmin,xmax],figure(n)) — — 指定指定

绘图窗口绘图。绘图窗口绘图。

Page 66: MATLAB 仿真实验

ezplot('sin(x)')ezplot('sin(x)')ezplot('sin(x)','cos(y)',[-4*pi ezplot('sin(x)','cos(y)',[-4*pi

4*pi],figure(2))4*pi],figure(2))

-6 -4 -2 0 2 4 6

-1

-0.5

0

0.5

1

x

sin(x)

-1 -0.5 0 0.5 1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x

y

x = sin(x), y = cos(y)

Page 67: MATLAB 仿真实验

例:绘制火柴杆绘图例:绘制火柴杆绘图 t=0:0.2:2*pi; y=cos(t); stem(y)t=0:0.2:2*pi; y=cos(t); stem(y)

0 5 10 15 20 25 30 35-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 68: MATLAB 仿真实验

三维绘图三维绘图三维绘图的主要功能:三维绘图的主要功能: 绘制三维线图绘制三维线图 绘制等高线图绘制等高线图 绘制伪彩色图绘制伪彩色图 绘制三维网线图绘制三维网线图 绘制三维曲面图、柱面图和球面图绘制三维曲面图、柱面图和球面图 绘制三维多面体并填充颜色绘制三维多面体并填充颜色

Page 69: MATLAB 仿真实验

plot3 —— plot3 —— 基本的三维图形指令基本的三维图形指令调用格式:调用格式:plot3(x,y,z) —— x,y,zplot3(x,y,z) —— x,y,z 是长度相同的向量是长度相同的向量plot3(X,Y,Z) —— X,Y,Zplot3(X,Y,Z) —— X,Y,Z 是维数相同的矩阵是维数相同的矩阵plot3(x,y,z,s) —— plot3(x,y,z,s) —— 带开关量带开关量plot3(xplot3(x11,y,y11,z,z11,'s,'s11', x', x22,y,y22,z,z22,'s,'s22', …)', …)

Page 70: MATLAB 仿真实验

二维图形的所有基本特性对三维图形全都二维图形的所有基本特性对三维图形全都适用。定义三维坐标轴适用。定义三维坐标轴

Page 71: MATLAB 仿真实验

调用格式:调用格式: surf(x,y,z) —— surf(x,y,z) —— 绘制三维曲面绘制三维曲面图,图, x,y,zx,y,z 为图形坐标向量为图形坐标向量例:例:[X,Y,Z]=peaks(30)[X,Y,Z]=peaks(30)※※peakspeaks 为为 matlabmatlab自动生成的三维测自动生成的三维测试图形试图形surf(X,Y,Z)surf(X,Y,Z) -2

02

-2

0

2

-5

0

5

xy

Peaks

Page 72: MATLAB 仿真实验

shading faceted — shading faceted — 网格修饰,缺省方式网格修饰,缺省方式

-20

2

-2

0

2

-5

0

5

xy

Peaks

Page 73: MATLAB 仿真实验

020

40

020

40-10

0

10

az=-37.5,el=30

020 40

0

20

40-10

010

az=-15,el=60

02040-10

-5

0

5

10az=-90,el=0

0 20 40

02040

-10

0

10

az=-7,el=-10

Page 74: MATLAB 仿真实验

MatlabMatlab 功能非常丰富,有兴趣的同学可以功能非常丰富,有兴趣的同学可以自己多学习一下 ,对今后的学习很有帮助自己多学习一下 ,对今后的学习很有帮助

Page 75: MATLAB 仿真实验

作业作业 11 、说明产生一个、说明产生一个 matlabmatlab 行向量的两种方行向量的两种方法,其中行向量从法,其中行向量从 00 开始,并在开始,并在 pipi 结束,结束,共有共有 1313 个等间隔点。个等间隔点。 22 、假定行向量、假定行向量 x=[3 6 9],y=[5 3 0],x=[3 6 9],y=[5 3 0], 下下

列列 matlabmatlab 运算的结果是什么?运算的结果是什么?A x+y b, x.*y A x+y b, x.*y c, x.^y d, x./yc, x.^y d, x./y

Page 76: MATLAB 仿真实验

描述下面的描述下面的 matlabmatlab 命令的结果:命令的结果: t=linspace (0,pi/2,123);t=linspace (0,pi/2,123); y=sin(2*t);y=sin(2*t); plot (t,y, ’r’)plot (t,y, ’r’)

Page 77: MATLAB 仿真实验

实验二,实验二, MATLABMATLAB 描述信号 描述信号 MATLABMATLAB 强大的图形处理功能及符号运算强大的图形处理功能及符号运算功能,为我们实现信号的可视化提供了强功能,为我们实现信号的可视化提供了强有力的工具。在有力的工具。在 MATLABMATLAB 中通常有两种中通常有两种方法来表示信号,一种是用向量来表示信方法来表示信号,一种是用向量来表示信号,另一种则是用符号运算的方法来表示号,另一种则是用符号运算的方法来表示信号。用适当的信号。用适当的 MATLABMATLAB 语句表示出信语句表示出信号后,我们就可以利用号后,我们就可以利用 MATLABMATLAB 的绘图的绘图命令绘制出直观的信号波形 命令绘制出直观的信号波形

Page 78: MATLAB 仿真实验

连续时间信号连续时间信号 所谓连续时间信号,是指自变量的取值范围所谓连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与有若干不连续点以外,信号都有确定的值与之对应的信号。从严格意义上来之对应的信号。从严格意义上来讲,讲, MATLABMATLAB并不能处理连续信号,在并不能处理连续信号,在

MATLABMATLAB 中,是用连续信号在等时间间隔中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。在好地近似出连续信号。在 MATLABMATLAB 中连续中连续信号可用向量或符号运算功能来表示 信号可用向量或符号运算功能来表示

Page 79: MATLAB 仿真实验

向量表示法向量表示法 11 .. 对于连续时间信号对于连续时间信号 ff((tt)) ,我们可以用两个,我们可以用两个行向量行向量 ff 和和 tt 来表示,其中向量来表示,其中向量 tt 是行如是行如 tt

== t1t1 :: pp :: t2t2 的的 MATLABMATLAB 命令定义的命令定义的时间范围向量,时间范围向量, tt11 为信号起始时间,为信号起始时间, tt22为中止时间,为中止时间, pp 为时间间隔。向量为时间间隔。向量 ff 为连为连续信号续信号 ff((tt)) 在向量在向量 tt 所定义的时间点上的样所定义的时间点上的样值 值

Page 80: MATLAB 仿真实验

例如对于连续信号例如对于连续信号 ff((tt)=sin()=sin(tt),),我们可以用如下我们可以用如下两个向量来表示:两个向量来表示: t=-10:1.5:10t=-10:1.5:10; ; f=sin(t)f=sin(t) 用上述向量对连续信号表示后,就可以用用上述向量对连续信号表示后,就可以用 plotplot 命命令来绘出该信号的时域波形。令来绘出该信号的时域波形。 PlotPlot 命令可将点与命令可将点与点间用直线连接,当点与点间的距离很小时,绘点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。命令如下:出的图形就成了光滑的曲线。命令如下: plot(t,f)plot(t,f) title(‘f(t)=sint’)title(‘f(t)=sint’) xlabel(‘t’)xlabel(‘t’) axis([-10,10,-1.1,1.1])axis([-10,10,-1.1,1.1])

Page 81: MATLAB 仿真实验

符号运算表示法符号运算表示法 22 .. 如果信号可以用一个符号表达式来表示它,则我如果信号可以用一个符号表达式来表示它,则我们可用们可用 ezplotezplot 命令绘制出信号的波形。例如对命令绘制出信号的波形。例如对于连续信号于连续信号 ff((tt)= )= ,我们可以用符号表达式表示,我们可以用符号表达式表示为:为: syms tsyms t ff == sym(‘exp(-t/2)’)sym(‘exp(-t/2)’) f= exp(-t/2)f= exp(-t/2) 然后用然后用 ezplotezplot 命令绘制其波形:命令绘制其波形: ezplot(f,[-6, ezplot(f,[-6,

6])6])

Page 82: MATLAB 仿真实验

离散时间信号离散时间信号 一般说来,离散时间信号用一般说来,离散时间信号用 ff((kk)) 表示,其中变量表示,其中变量 kk 为整为整数,代表离散的采样时间点。数,代表离散的采样时间点。 ff((kk)) 可表示为:可表示为: ff((kk)={...)={...ff(-2),(-2),ff(-1),(-1),ff(0),(0),ff(1),(1),ff(2)…}(2)…} ↑ ↑kk == 00 在在 MATLABMATLAB 中,用一个向量中,用一个向量 ff 即可表示一个有限长度的即可表示一个有限长度的序列。但是,这样的向量并没有包含其对应的时间序号信序列。但是,这样的向量并没有包含其对应的时间序号信息。所以,要完整地表示一个离散信号需要用两个向量。息。所以,要完整地表示一个离散信号需要用两个向量。 如序列: 如序列: ff((kk)={1,2,-1,3,2,4,-1})={1,2,-1,3,2,4,-1} ↑ ↑kk=0=0 在在 MATLABMATLAB 中应表示为:中应表示为: kk=[-3,-2,-1,0,1,2,3]=[-3,-2,-1,0,1,2,3] 或是或是 kk == -3-3 :: 33 ;; ff= [1, 2,-1, = [1, 2,-1,

3, 2, 4,-1]3, 2, 4,-1]

Page 83: MATLAB 仿真实验

在用在用 MATLABMATLAB表示离散序列并将其可视表示离散序列并将其可视化时,我们要注意以下几点:第一,与连化时,我们要注意以下几点:第一,与连续时间信号不同,离散时间信号无法用符续时间信号不同,离散时间信号无法用符号运算来表示;第二,由于在号运算来表示;第二,由于在 MATLABMATLAB中,矩阵的元素个数是有限的,因中,矩阵的元素个数是有限的,因此,此, MATLABMATLAB无法表示无限序列;第三,无法表示无限序列;第三,在绘制离散信号波形时,要使用专门绘制在绘制离散信号波形时,要使用专门绘制离散数据的离散数据的 stemstem 命令,而不是命令,而不是 plotplot 命令 命令

Page 84: MATLAB 仿真实验

同样的,单位阶跃序列,正弦序列,离散同样的,单位阶跃序列,正弦序列,离散时间指数序列等的离散信号我们都可以用时间指数序列等的离散信号我们都可以用类似的方法描述并绘制出图形 类似的方法描述并绘制出图形

Page 85: MATLAB 仿真实验

指数信号指数信号 AeAeatat

yy == A*exp(a*t)A*exp(a*t) 取取 AA == 11 ,, aa == -0.4-0.4 A=1;a=-0.4;A=1;a=-0.4; t=0:0.01:10;t=0:0.01:10; ft= A*exp(a*t);ft= A*exp(a*t); plot(t,ft)plot(t,ft)

Page 86: MATLAB 仿真实验

正弦信号正弦信号 y=A*cos(w0*t+phi)y=A*cos(w0*t+phi) y=A*sin(w0*t+phi)y=A*sin(w0*t+phi)

Page 87: MATLAB 仿真实验

抽样函数抽样函数 y=sinc(t)y=sinc(t)

Page 88: MATLAB 仿真实验

矩形脉冲信号矩形脉冲信号 y=rectpuls(t,width)y=rectpuls(t,width) 产生幅度为产生幅度为 11 ,宽度为,宽度为 widthwidth 以以 tt == 00 为为对称的矩形波对称的矩形波 WidthWidth 默认值为默认值为 11

Page 89: MATLAB 仿真实验

三角波脉冲信号三角波脉冲信号 yy == tripuls(t,width,skew)tripuls(t,width,skew)

Page 90: MATLAB 仿真实验

指数序列 指数序列 AaAakk

A*a.^kA*a.^k K=0:10;A=1;a=-1.6;K=0:10;A=1;a=-1.6; fk= A*a.^k;fk= A*a.^k; stem(k,fk)stem(k,fk)

Page 91: MATLAB 仿真实验

正弦序列正弦序列

Page 92: MATLAB 仿真实验

单位脉冲序列单位脉冲序列 ……0 0 0 0 0 0 0 1 0 0 0 0 0 0…0 0 0 0 0 0 0 1 0 0 0 0 0 0… 零矩阵函数零矩阵函数 zeros(1,N)zeros(1,N) 产生一个由产生一个由 NN 个个零组成的列向量,零组成的列向量, k=-50:50;k=-50:50; delta=[zero(1,50),1,(1,50)];delta=[zero(1,50),1,(1,50)]; stem(k,delta)stem(k,delta)

Page 93: MATLAB 仿真实验

单位阶跃序列单位阶跃序列 ……0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 …0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 … 零矩阵函数零矩阵函数 zeros(1,N)zeros(1,N) 产生一个由产生一个由 NN 个个零组成的列向量,零组成的列向量, ones(1.N)ones(1.N) 产生一个由产生一个由NN 个个 11 组成的列向量组成的列向量 k=-50:50;k=-50:50; uk=[zero(1,50),ones(1,51)];uk=[zero(1,50),ones(1,51)]; stem(k,uk)stem(k,uk)

Page 94: MATLAB 仿真实验

信号的时域变换信号的时域变换 信号的时域变换包括信号的平移、反折、信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。我们就分别介绍倒相及信号的尺度变换。我们就分别介绍连续时间信号和离散时间信号的各种时域连续时间信号和离散时间信号的各种时域变换变换 [11] [11]

Page 95: MATLAB 仿真实验

连续信号的时域变换连续信号的时域变换 11 .移位.移位 对于连续信号对于连续信号 ff((tt),),若有常数若有常数 tt0>00>0 ,延时信号,延时信号ff((tt--tt0)0) 是将原信号沿正是将原信号沿正 tt 轴方向平移时间轴方向平移时间 tt00 ,而,而ff((tt++tt0)0) 是将原信号沿负是将原信号沿负 tt 轴方向移动时间轴方向移动时间 tt00 。。我们可用下面的命令来实现连续信号的平移及其我们可用下面的命令来实现连续信号的平移及其结果可视化,其中结果可视化,其中 ff 是用符号表达式表示的连续是用符号表达式表示的连续时间信号,时间信号, tt 是符号变量,是符号变量, subssubs 命令则将连续信命令则将连续信号中的时间变量号中的时间变量 tt 用用 tt -- tt00 替换:替换:

y=subs(f,t,t-t0); ezplot(y)y=subs(f,t,t-t0); ezplot(y)

Page 96: MATLAB 仿真实验

22 .反折.反折 连续信号的反折,是指将信号以纵坐标为连续信号的反折,是指将信号以纵坐标为轴反折,即将信号轴反折,即将信号 f(t)f(t) 中的自变量中的自变量 tt 换为-换为-tt 。实现如下:。实现如下: y=subs(f,t,-t); ezplot(y)y=subs(f,t,-t); ezplot(y)

Page 97: MATLAB 仿真实验

33 .尺度变换.尺度变换 连续信号的尺度变换,是指将信号的横坐连续信号的尺度变换,是指将信号的横坐标进行展宽或压缩变换,即将信号标进行展宽或压缩变换,即将信号 ff((tt)) 中中的自变量的自变量 tt 换为换为 atat ,当,当 aa>1>1 时,信号时,信号ff((atat)) 以原点为基准,沿横轴压缩到原来的以原点为基准,沿横轴压缩到原来的1/1/aa;; 当当 0<0<aa<1<1 时,就展宽至原来的时,就展宽至原来的 1/1/aa倍。实现如下:倍。实现如下:

y=subs(f,t,*t); ezplot(y)y=subs(f,t,*t); ezplot(y)

Page 98: MATLAB 仿真实验

44 .倒相.倒相 连续信号的倒相是指将信号连续信号的倒相是指将信号 ff((tt)) 以横轴为以横轴为对称轴对折得到-对称轴对折得到- ff((tt)) 。实现如下:。实现如下: y=-f; ezplot(y)y=-f; ezplot(y) 对于以上的命令,可在画图命令之后加入对于以上的命令,可在画图命令之后加入坐标轴的调整的命令坐标轴的调整的命令 (( 即加入即加入 axis( )axis( ) 命命

令令 )) ,以使画出的图形更清晰、直观。,以使画出的图形更清晰、直观。

Page 99: MATLAB 仿真实验

离散时间序列的时域变换离散时间序列的时域变换 与连续信号不同的是,在与连续信号不同的是,在 MATLABMATLAB 中,中,离散序列的时域变换不能用符号运算来实离散序列的时域变换不能用符号运算来实现,而必须用向量表示的方法,即在现,而必须用向量表示的方法,即在

MATLABMATLAB 中离散序列的变换需表示成两个中离散序列的变换需表示成两个向量的变换。向量的变换。

Page 100: MATLAB 仿真实验

11 .离散序列反折.离散序列反折 离散序列的反折,即是将表示离散序列的两向离散序列的反折,即是将表示离散序列的两向量以零时刻的取值为基准点,以纵轴为对称轴量以零时刻的取值为基准点,以纵轴为对称轴反折,向量的反折可用反折,向量的反折可用 MATLABAMATLABA 中的中的 fliplrfliplr函数来实现,具体实现如下:函数来实现,具体实现如下: function [f,k]=lsfz(f1,k1)function [f,k]=lsfz(f1,k1) f=fliplr(f1);k=-fliplr(k1); %f=fliplr(f1);k=-fliplr(k1); %调用此函数调用此函数实现向量实现向量 f1f1 和和 k1k1 的反折的反折 stem(k,f,’filled’)stem(k,f,’filled’) axis([min(k)-1,max(k)+1,min(f)-axis([min(k)-1,max(k)+1,min(f)-

0.5,max(f)+0.5])0.5,max(f)+0.5])

Page 101: MATLAB 仿真实验

22 .离散序列的平移.离散序列的平移 离散序列的平移可看作是将离散序列的时间序离散序列的平移可看作是将离散序列的时间序号向量平移,而表示对应时间序号点的序列样号向量平移,而表示对应时间序号点的序列样值不变,当序列向左移动值不变,当序列向左移动 kk00 个单位时,所以时个单位时,所以时间序号向量都减小间序号向量都减小 kk00 个单位,反之则增加个单位,反之则增加 kk00个单位。实现如下:个单位。实现如下: function [f,k]=lsyw(ff,kk,k0)function [f,k]=lsyw(ff,kk,k0) k=kk+k0;f=ff;k=kk+k0;f=ff; stem(k,f,’filled’)stem(k,f,’filled’) axis([min(k)-1,max(k)+1,min(f)-axis([min(k)-1,max(k)+1,min(f)-

0.5,max(f)+0.5])0.5,max(f)+0.5])

Page 102: MATLAB 仿真实验

33 .离散序列的倒相.离散序列的倒相 离散序列的倒相可看作是将表示序列样值的向量离散序列的倒相可看作是将表示序列样值的向量取反,而对应的时间序号向量不变,得到的离散取反,而对应的时间序号向量不变,得到的离散时间序列。实现如下:时间序列。实现如下: function [f,k]=lsdx(ff,kk)function [f,k]=lsdx(ff,kk) f=-ff;f=-ff; k=kk;k=kk; stem(k,f,’filled’)stem(k,f,’filled’) axis([min(k)-1,max(k)+1,min(f)-axis([min(k)-1,max(k)+1,min(f)-

0.5,max(f)+0.5])0.5,max(f)+0.5])