文档库 最新最全的文档下载
当前位置:文档库 › MATLAB软件操作入门

MATLAB软件操作入门

MATLAB软件操作入门
MATLAB软件操作入门

第一部分 MATLAB应用基础

1.1 MATLAB软件在信号与系统中的应用介绍

MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。MA TLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。1993年MathWorks公司从加拿大滑铁卢大学购得MAPLE软件的使用权,从而以MAPLE为“引擎”开发了符号数学工具箱(Symbolic Math Toolbox)。

MATLAB软件包括五大通用功能:数值计算功能(Nemeric);符号运算功能(Symbolic);数据可视化功能(Graphic);数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MA TLAB命令窗口。

该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MATLAB在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。

MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能能基本满足信号与系统课程的需求。例如,解微分方程、傅里叶正反变换、拉普拉斯正反变换、z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲激响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析、零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入理解信号与系统的理论知识,并为将来使用MA TLAB进行信号处理领域的各种分析和实际应用打下基础。

1.2 MATLAB软件使用入门

1.2.1 MATLAB的运行方式

安装好后的MA TLAB可以从桌面快捷方式启动,也可以从Windows开始菜单中启动。

MATLAB的程序可以用两种运行方式:指令运行方式和M文件运行方式。指令运行方式通过直接在指令窗口中输入指令来实现计算或作图功能。当解决问题所需的指令较少时,可以采用此运行方式。M文件运行方式是先建立编辑保存M文件,然后在M文件编辑窗口菜单中运行;或者在指令窗口中输入此文件名,回车运行。当解决问题所需的指令较多时,了采用M文件的方式。

1.2.2 MATLAB软件的环境介绍

MATLAB在Windows、Linux、Mac操作系统下都可以运行,本书以Windows 操作系统MA TLAB 7.1版本进行应用介绍。

MATLAB 软件的工作桌面由标题栏、菜单栏、工具栏、指令窗口(Command Window)、工作空间窗口(Workspace)、当前目录窗口(Current Directory)、历史命令窗口(Command History)及状态栏组成,从而为用户使用MATLAB提供了集成的交互式图形界面,如图1-1所示。

Simulink模块库图形用户界面开发环境代码分析器当前工作目录工作目录设置

快捷开始菜单工作区窗口指令窗口

当前目录浏览器窗口历史指令

图1-1 MATLAB主窗口

MATLAB的命令窗口是接收用户输入命令及输出数据显示的窗口,几乎所有的MATLAB行为都是在命令窗口进行的。当启动MATLAB软件时,命令窗口就做好了接收指令和输入的准备,并出现命令提示符(>>)。在命令提示符后输入指令通常会创建一个或多个变量。变量可以是多种类型的,包括函数和字符串,但通常的变量只是数据。这些变量被放置在MA TLAB的工作空间中,工作空间窗口提供了变量的一些重要信息,包括变量的名称、维数大小、占用内存大小、以及数据类型等信息。查看工作空间的另一种方法是使用whos命令。在命令提示符后输入whos命令,工作空间中的内容概要将作为输出显示在命令窗口中。

有的命令可以用来清除不必要的数据,同时释放部分系统资源。clear命令可以用来清除工作空间的所有变量,如果要清除某一特定变量则需要在clear命令后加上该变量的名称。另外,clc命令用来清除命令窗口的内容。

如果希望将MA TLAB所创建的变量及重要数据保留下来,则使用save命令,并在其后加上文件名,即可将整个工作空间保存为一个扩展名为.mat的文件。使用load命令,并在其后加上文件名,则可将MATLAB数据文件(.mat文件)中的数据加载到工作空间中。

MATLAB历史命令窗口记录了每次输入的命令。在该窗口中可以对以前的历史命令进行查看、复制或者直接运行。

对于初学者而言,需要掌握的最重要且最有用的命令应为help命令。MATLAB命令和函数有数千个,而且许多命令的功能非常强大,调用形式多样。要想了解一个命令或函数,只需在命令提示符后输入help,并加上该命令或函数的名称,则MA TLAB会给出其详细帮助信息。另外,MA TLAB还精心设计了演示程序系统(Demo),内容包括MA TLAB的内部主要函数和各个工具箱(Toolbox)的使用。初学者可以方便地通过这些演示程序及其给出的程序源代码进行直观的感受和学习。用户可以通过两种途径打开演示程序系统。一是在命令窗口中输入demo或demos命令并按Enter键;二是选择“help”→“Demos”菜单命令。

1.3 MATLAB软件基本运算

1.3.1 MATLAB软件的数值计算

1. 算术运算

MATLAB可以像一个简单的计算器一样使用,不论是实数运算还是复数运算都能轻松完成。标量的加法、减法、除法和幂运算均可通过常规符号“+”、“-”、“*”、“/”、以及“^”

-。因来完成。对于复数中的虚数单位,MATLAB采用预定义变量i或j表示,即i=j=1

此,一个复常量可用直角坐标形式来表示,例如,

>>A=-3-i*4

A=

-3.0000 - 4.0000i

将复常量-3-i4赋予了变量A。

一个复常量还可用极坐标的形式来表示,例如,

>>B=2*exp(i*pi/6)

B=

1.7321 + 1.0000i

其中,pi是MATLAB预定义变量,pi=π。

复数的实部和虚部可以通过real和imag运算符来实现,而复数的模和辐角可以通过abs 和angle运算符来实现。但应注意辐角的单位为弧度。例如,复数A的模和辐角、复数B 的实部和虚部的计算分别为

>>A_mag=abs(A)

A_mag=

5

>>A_rad=angle(A)

A_rad=

-2.2143

>>B_real=real(B)

B_real=

1.7321

>>B_imag=imag(B)

B_imag=

1.0000

如果将弧度值用“度”来表示,则可进行转换,即

>>A_deg=angle(A)*180/pi A_deg= -126.8699

复数A 的模可表示为*AA A =

,因此,其共轭复数可通过conj 命令来实现,例如,

>>A_mag=sqrt(A*conj(A)) A_mag= 5

2. 向量运算

向量是组成矩阵的基本元素之一,MATLAB 具有关于向量运算的强大功能。一般地,向量被分为行向量和列向量。生成向量的方法有很多,我们主要介绍两种。

①直接输入向量:即把向量中的每个元素列举出来。向量元素要用“[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。例如,

>>A=[1,3,5,21] A=

1 3 5 21 >>B=[1;3;5;21] B= 1 3 5 21

②利用冒号表达式生成向量:这种方法用于生成等步长或均匀等分的行向量,其表达式为x=x0:step:xn 。其中,x0为初始值;step 表示步长或增量;xn 为结束值。如果step 值缺省,则步长默认为1。例如,

>>C=0:2:10 C=

0 2 4 6 8 10 >>D=0:10 D=

0 1 2 3 4 5 6 7 8 9 10

在连续时间信号和离散时间信号的表示过程中,我们经常要用到冒号表达式。例如,对于10≤≤t 范围内的连续信号,可用冒号表达式“t =0:0.001:1;”来近似表达该区间,此时,向量t 表示该区间以0.001为间隔的1001个点。

如果一个向量或一个标量与一个数进行运算,即“+”、“-”、“*”、“/”、以及“^”运算,则运算结果是将该向量的每一个元素与这个数逐一进行相应的运算所得到的新的向量。例如,

>>C=0:2:10; >>E=C/4 E=

0 0.5000 1.0000 1.5000 2.0000 2.5000

其中,第一行语句结束的分号是为了不显示C 的结果;第二句没有分号则显示出E 的结果。

一个向量中元素的个数可以通过命令“length ”获得,例如, >>t =0:0.001:1;

>>L=length(t) L= 1001

(3)矩阵运算

MATLAB 又称矩阵实验室,因此,MATLAB 中矩阵的表示十分方便。例如,输入矩阵

????

?

?????333231232221131211在MA TLAB 命令窗口中可输入下列命令得到,即 >>a=[11 12 13;21 22 23;31 32 33] a=

11 12 13 21 22 23 31 32 33

其中,命令中整个矩阵用括号“[ ]”括起来;矩阵每一行的各个元素必须用逗号“,”或空格分开;矩阵的不同行之间必须用分号“;”或者按Enter 键分开。

在矩阵的加减运算中,矩阵维数相同才能实行加减运算。矩阵的加法或减法运算是将矩阵的对应元素分别进行加法或减法运算。在矩阵的乘法运算中,要求两矩阵必须维数相容,即第一个矩阵的列数必须等于第二个矩阵的行数。例如,

>>a=[1 2 3;4 5 6] a=

1 2 3 4 5 6 >>b=[1 2; 3 4;5 6] b= 1 2 3 4 5 6 >>c=a*b c=

22 28 49 64

MATLAB 中矩阵的点运算指维数相同的矩阵位置对应元素进行的算术运算,标量常数可以和矩阵进行任何点运算。常用的点运算包括“.*”、“./”、“.\”、“.^”等。矩阵的加法和减法是在对应元素之间进行的,所以不存在点加法或点减法。

点乘运算,又称Hadamard 乘积,是指两维数相同的矩阵或向量对应元素相乘,表示为C=A.*B 。点除运算是指两维数相同的矩阵或向量中各元素独立的除运算,包括点右除和点左除。其中,点右除表示为C =A./B ,意思是A 对应元素除以B 对应元素;点左除表示为C =A.\B ,意思是B 对应元素除以A 对应元素。点幂运算指两维数相同的矩阵或向量各元素独立的幂运算,表达式为C =A.^B 。

【实例1-1】 已知t 为一向量,用MATLAB 命令计算22

sin()5

cos()1

t t e y t t -+=++在10≤≤t 区

间上对应的值。

解:表达式中的运算都是点运算,MATLAB 源程序为

>>t=0:0.01:1;

>>y=(sin(t).*exp(-2*t)+5)./(cos(t)+t.^2+1); >>plot(t,y),xlabel('t'),ylabel('y')

这里,我们未将y 向量的结果显示出来,而是利用plot 命令将结果绘出图形来,如图1-2所示。

1.3.2 MATLAB 软件的符号运算

MATLAB 符号运算工具箱提供的函数命令是专门研究符号运算功能的。符号运算是指符号之间的运算,其运算结果仍以标准的符号形式表达。符号运算是MA TLAB 的一个极其重要的组成部分,符号表示的解析式比数值解具有更好的通用性。在使用符号运算之前必须定义符号变量,并创建符号表达式。定义符号变量的语句格式为

syms 变量名

其中,各个变量名须用空格隔开。例如,定义x 、y 、z 三个符号变量的语句格式为

>>syms x y z

我们可以用whos 命令来查看所定义的符号变量,即

>>clear >>syms x y z >>whos

Name Size Bytes Class x 1x1 126 sym object y 1x1 126 sym object z 1x1 126 sym object Grand total is 6 elements using 378 bytes

可见,变量x 、y 、z 必须通过符号对象定义,即sym object ,才能参与符号运算。

另一种定义符号变量的语句格式为 sym('变量名')

例如,x 、y 、z 三个符号变量定义的语句格式为

>>x=sym('x'); >>y=sym('y'); >>z=sym('z');

sym 语句还可以用来定义符号表达式,语句格式为

sym('表达式')

1-2 实例1-1的结果

例如,定义表达式x+1为符号表达式对象,语句为

>>sym('x+1');

另一种创建符号表达式的方法是先定义符号变量,然后直接写出符号表达式。例如,在

MATLAB 中创建符号表达式1

)cos(5

)sin(2

2+++=-t t e t y t ,其MA TLAB 源程序为 >>syms t

>>y=(sin(t).*exp(-2*t)+5)./(cos(t)+t.^2+1) y=

(sin(t)*exp(-2*t)+5)/(cos(t)+t^2+1)

例如,符号算术运算的MATLAB 源程序为

>>clear >>syms a b >>f1=1/(a+1); >>f2=2*a/(a+b); >>f3=(a+1)*(b-1)* (a-b); >>f1+f2 ans=

1/(a+1)+2*a/(a+b) >>f1*f3 ans=

(b-1)*(a-b) >>f1/f3 ans=

1/(a+1)^2/(b-1)/(a-b)

在符号运算中,可以用“simple ”或者“simplify ”函数来化简运算结果,例如,

>>syms x >>f1=sin(x)^2; >>f2=cos(x)^2; >>y=f1+f2 y=

sin(x)^2+cos(x)^2 >>y=simplify(y) y= 1

1.4 MATLAB 的图形绘制 1.4.1 二维绘图

MATLAB 的plot 命令是绘制二维曲线的基本函数,它为数据的可视化提供了方便的途径。例如,函数)(x f y =关于变量x 的曲线绘制的语句格式为

>>plot(x,y)

其中,输出以向量x 为横坐标,向量y 为纵坐标,且按照向量x 、y 中元素的排列顺序有序绘制图形。但向量x 与y 必须拥有相同的长度。

绘制多幅图形的语句格式为 >>plot(x1,y1,'str1',x2,y2,'str2',...)

其中,用str1制定的方式,输出以x1为横坐标、y1为纵坐标的图形。用str2制定的方式,输出以x2为横坐标、y2为纵坐标的图形。若省略str ,则MA TLAB 自动为每条曲线选择颜色与线型。

图形完成后,可以通过几个命令来调整显示结果。如grid on 用来显示格线;axis([xmin,xmax,ymin,ymax])函数调整坐标轴的显示范围。其中,括号内的“,”可用空格代替;xlabel 和ylabel 命令可为横坐标和纵坐标加标注,标注的字符串必须用单引号引起来;title 命令可在图形顶部加注标题。

【实例1-2】 用MA TLAB 命令绘制函数2

)cos(1

)10sin(++=t t y ππ的波形图。

解:MATLAB 源程序为

>>t=0:0.01:5;

>>y=sin(5*pi*t)+1./(cos(pi*t)+2); >>plot(t,y) >>axis([0,5,-1,2.5]) >>xlabel('t'),ylabel('y'), >>grid on

程序运行结果如图1-3所示。

用subplot 命令可在一个图形窗口中按照规定的排列方式同时显示多个图形,方便图形的比较。其语句格式为

>>subplot(m,n,p)

或者

>>subplot(mnp)

其中,m 和n 表示在一个图形窗口中显示m 行n 列个图像,p 表示第p 个图像区域,即在第p 个区域作图。例如,比较正弦信号相位差的MATLAB 源程序为

>>t=0:0.01:3; >>y1=sin(2*pi*t); >>y2=sin(2*pi*t+pi/6); >>subplot(211),plot(t,y1)

>>xlabel('t'),ylabel('y1'),title('y1=sin(2*pi*t)')

图1-3 实例1-2的函数波形图

>>subplot(212),plot(t,y2)

>>xlabel('t'),ylabel('y2'),title('y2=sin(2*pi*t+pi/6)')

程序运行结果如图1-4所示。

除了plot 命令外,MATLAB 提供了ezplot 命令绘制符号表达式的曲线,其语句格式为

>>ezplot(y, [a,b])

其中,[a ,b]参数表示符号表达式的自变量取值范围,默认值为]2,0[π。

【实例1-3】 利用MATLAB 的ezplot 命令绘出函数9664162

++-=x x y 的波形图。 解:MATLAB 源程序为

>>syms x

>>y='-16*x^2+64*x+96'; >>ezplot(y,[0,5]) >>xlabel('t'),ylabel('y'), >>grid on

程序运行结果如图1-5所示。

在绘图过程中,我们可利用“hold on ”命令来保持当前图形,继续在当前图形状态下绘制其他图形,即可在同一窗口下绘制多幅图形。“hold off ”命令用来释放当前图形窗口,绘制下一幅图形作为当前图形。 附录

图1-5

实例1-3的函数波形图

图1-4 正弦信号相位差比较

1.4.2 三维绘图

1.2.4 M文件

MATLAB是解释型语言,也就是说在MATLAB命令行中输入的命令在当前MATLAB 进程中被解释运行,无需编译和链接等。MA TLAB文件分为两类:M脚本文件(M-Script)和M函数(M-function),它们均为由ASCII码构成的文件,该文件可直接在文本编辑器中编写,称为M文件,保存的文件扩展名是.m。

M脚本文件包含一族由MATLAB语言所支持的语句,并保存为M文件。它类似于DOS 下的批处理文件,不需要在其中输入参数,也不需要给出输出变量来接受处理结果。脚本仅是若干命令或函数的集合,用于执行特定的功能。其执行方式很简单,用户只需在MATLAB 的提示符>>下键入该M文件的文件名,这样MA TLAB就会自动执行该M文件中的各条语句,并将结果直接返回到MATLAB工作空间中。脚本M文件实际上是一系列MATLAB命令的集合,它的作用与在MATLAB命令窗口输入的一系列命令等效。

M函数文件不同于M脚本文件,是一种封装结构,通过外界提供输入量而得到函数文件的输出结果。函数是接受入口参数返回出口参数的M文件,程序在自己的工作空间中操作变量,与工作空间分开,无法访问。M函数文件和M脚本文件都是在编辑器中生成,通常以关键字function引导“函数声明行”,并罗列出函数与外界联系的全部“标称”输入输出宗量。它的一般形式为

function [output 1, output 2,…] = functionname(input1, input2,…)

%[output 1, output 2,…] = functionname(input1, input2,…) Functionname

%Some comments that explain what the function does go here.

MA TLAB command 1;

MA TLAB command 2;

MA TLAB command 3;

……

该函数的M文件名是functionname.m,在MATLAB命令窗口中可被其他M文件调用,例如,

>> [output1, output2] = functionname(input1, input2)

注意,MATLAB忽略了“%”后面的本行内所有文字,因此,可以利用该符号写注释。以“;”结束一行可以停止输出打印,在一行的最后输入“…”可以续行,以便在下一行继续输入指令。

1.2.5 MATLAB程序流程控制

MATLAB与其他高级编程语言一样,是一种结构化的编程语言。MA TLAB程序流程控制结构一般可分为顺序结构、循环结构、以及条件分支结构。MA TLAB中实现顺序结构的方法非常简单,只需将程序语句按顺序排列即可。在MA TLAB中,循环结构可以由for语句循环结构和while语句循环结构两种方式来实现。条件分支结构可以由if语句分支结构和switch语句分支结构两种方式来实现。下面我们主要介绍这几种程序流程控制。

1. for循环结构

for循环结构用于在一定条件下多次循环执行处理某段指令,其语法格式为

for 循环变量=初值:增量:终值

循环体

end

循环变量一般被定义为一个向量,这样循环变量从初值开始,循环体中的语句每被执行一次,变量值就增加一个增量,直到变量等于终值为止。增量可以根据需要设定,默认时为1。end代表循环体的结束部分。

例如,用for循环结构求1+2+3+…100的和,其MA TLAB源程序为

>>sum=0;

>>for i=1:1:100

sum=sum+i;

end

>>sum

sum=

5050

2. while循环结构

while循环结构也用于循环执行处理某段指令,但是与for循环结构不同的是在执行循环体之前先要判断循环执行的条件是否成立,即逻辑表达式为“真”还是“假”,如果条件成立,则执行;如果条件不成立,则终止循环。其语法格式为

while 逻辑表达式

循环体

end

例如,用while循环结构求1+2+3+…100的和,其MATLAB源程序为

>>sum=0;i=0;

>>while i<100

i=i+1;

sum=sum+i;

end

>>sum

sum=

5050

从上述MA TLAB源程序可以看出,while循环结构是通过判断逻辑表达式i<100是否为“真”,而决定是否执行循环体。

3. if分支结构

if条件分支结构是通过判断逻辑表达式是否成立来决定是否执行制定的程序模块。其语法格式有两种,一种是单分支结构;另一种为多分支结构。其中,单分支结构语法格式为if 逻辑表达式

程序模块

end

单分支结构语法格式的含义是,如果逻辑表达式为“真”,则执行程序模块,否则跳过该分支结构,按顺序结构执行下面的程序。

多分支结构的语法格式为

if 逻辑表达式1

程序模块1

else if 逻辑表达式2 (可选)

程序模块2

……

else

程序模块n

end

多分支结构语法格式可理解为:首先判断if条件分支结构中的逻辑表达式1是否成立,如果成立则执行程序模块1;否则继续判断else if条件分支结构中的逻辑表达式2,如果成立则执行程序模块2;依次下去,如果结构中所有条件都不成立,则执行程序模块n。

例如,用if条件分支结构可实现百分制考试分数分级,其MA TLAB源程序为

>>s=input('输入score= '); %屏幕提示输入x=,由键盘输入值赋给x

>>if s>=90

rank='A'

elseif s>=80

rank='B'

elseif s>=70

rank='C'

elseif s>=60

rank='D'

else

rank='E'

end

4. switch分支结构

switch分支结构是根据表达式的取值结果不同来选择执行的程序模块,其语法格式为switch 表达式

case 常量1

程序模块1

case 常量2

程序模块2

……

otherwise

程序模块n

end

其中,switch后面的表达式可以是任何类型,如数字、字符串等。当表达式的值与case后面的常量相等时,就执行对应的程序模块;如果所有常量都与表达式的值不等时,则执行

otherwise后面的程序模块。

例如,用switch分支结构也可实现百分制考试分数分级,其MATLAB源程序为

>>s=input('输入score= ');

>>switch fix(s/10) %利用fix函数舍去小数部分取最近整数

case {10,9}

rank='A'

case 8

rank='B'

case 7

rank='C'

case 6

rank='D'

otherwise

rank='E'

end

除上述几种程序流程控制结构外,MA TLAB为实现交互控制程序流程还提供了continue、break、pause、input、error、disp等命令。读者可通过help命令查看。

附录一 MATLAB环境

表1.1命令窗口中行编辑的常用操作键

表1.2MATLAB常用标点符号的功能

注意:以上的符号一定要在英文状态下输入,因为MATLAB不能识别中文标点符号。

clc:用于清空命令窗口中的显示内容。

表1.3数据显示的Format格式

表1.4 特殊变量表

函数的输入变量数目

Matlab脚本文件和函数文件

M文件有两种形式:M脚本文件和M函数文件。

M函数文件的基本格式:

函数声明行

H1行(用%开头的注释行)

在线帮助文本(用%开头)

编写和修改记录(用%开头)

函数体

函数文件的特点:

(1) 第一行总是以“function”引导的函数声明行;

函数声明行的格式:

function [输出变量列表] = 函数名(输入变量列表)

(2) 函数文件在运行过程中产生的变量都存放在函数本身的工作空间;

(3) 当文件执行完最后一条命令或遇到“return”命令时,就结束函数文件的运行,同时函数工作空间的变量就被清除;

(4) 函数的工作空间随具体的M函数文件调用而产生,随调用结束而删除,是独立的、临时的,在MATLAB运行过程中可以产生任意多个临时的函数空间。

附录二MATLAB常用命令函数表

表2.1矩阵生成函数

zeros、ones、rand、randn和eye函数当只有一个参数n时,则为n×n的方阵;

当eye(m,n)函数的m和n参数不相等时则单位矩阵会出现全0行或列。

表2.2 常用矩阵翻转函数

表2.3 常用矩阵运算函数

表2.4 基本函数

表2.5 矩阵和数组运算对比表

附录三基本绘图命令

1. 基本绘图命令plot

plot(x) 绘制x向量曲线

plot命令是MATLAB中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。

语法:

plot(x) %绘制以x为纵坐标的二维曲线

plot(x,y) %绘制以x为横坐标y为纵坐标的二维曲线

说明:x和y可以是向量或矩阵。

plot(x1,y1,x2,y2,…)绘制多条曲线

plot命令还可以同时绘制多条曲线,用多个矩阵对为参数,MATLAB自动以不同的颜色绘制不同曲线。每一对矩阵(xi,yi)均按照前面的方式解释,不同的矩阵对之间,其维数可以不同。

2多个图形绘制的方法

1. 指定图形窗口

如果需要多个图形窗口同时打开时,可以使用figure语句。

语法:

figure(n) %产生新图形窗口

说明:如果该窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为“Figure No.n”,而不关闭其它窗口。

2. 同一窗口多个子图

如果需要在同一个图形窗口中布置几幅独立的子图,可以在plot命令前加上subplot命令来将一个图形窗口划分为多个区域,每个区域一幅子图。

语法:

subplot(m,n,k) %使(m×n)幅子图中的第k幅成为当前图

说明:将图形窗口划分为m×n幅子图,k是当前子图的编号,“,”可以省略。子图的序号编排原则是:左上方为第1幅,先向右后向下依次排列,子图彼此之间独立。

3. 同一窗口多次叠绘

为了在一个坐标系中增加新的图形对象,可以用“hold”命令来保留原图形对象。

语法:

hold on %使当前坐标系和图形保留

hold off %使当前坐标系和图形不保留

hold %在以上两个命令中切换

说明:在设置了“hold on”后,如果画多个图形对象,则在生成新的图形时保留当前坐标系中已存在的图形对象,MATLAB会根据新图形的大小,重新改变坐标系的比例。

4. 双纵坐标图

语法:

plotyy(x1,y1,x2,y2) %以左、右不同纵轴绘制两条曲线

说明:左纵轴用于(x1,y1)数据,右纵轴用于(x2,y2)数据来绘制两条曲线。坐标轴的范围、刻度都自动产生。

3曲线的线型、颜色和数据点形

plot命令还可以设置曲线的线段类型、颜色和数据点形等,如表所示。

表3.1线段、颜色与数据点形

语法:

plot(x,y,s)

说明:x为横坐标矩阵,y为纵坐标矩阵,s为类型说明字符串参数;s字符串可以是线段类型、颜色和数据点形三种类型的符号之一,也可以是三种类型符号的组合。

4. 坐标轴的控制

用坐标控制命令axis来控制坐标轴的特性,下表列出其常用控制命令。

表3.2 常用的坐标控制命令

5. 分格线和坐标框

(1) 使用grid命令显示分格线

语法:

grid on %显示分格线

grid off %不显示分格线

grid%在以上两个命令间切换

说明:不显示分格线是MATLAB的默认设置。分格线的疏密取决于坐标刻度,如果要改变分格线的疏密,必须先定义坐标刻度。

(2) 使用box命令显示坐标框

语法:box on %使当前坐标框呈封闭形式

box off %使当前坐标框呈开启形式

box %在以上两个命令间切换

6. 文字标注

(1) 添加图名

语法:title(s) %书写图名

说明:s为图名,为字符串,可以是英文或中文。

(2) 添加坐标轴名

语法:xlabel(s) %横坐标轴名

ylabel(s) %纵坐标轴名

(3) 添加图例

语法:legend(s,pos) %在指定位置建立图例

legend off %擦除当前图中的图例

说明:参数s是图例中的文字注释,如果多个注释则可以用’s1’,’s2’,…的方式;参数pos是图例在图上位置的指定符,它的取值如表所示。

pos取值所对应的图例位置

用legend命令在图形窗口中产生图例后,还可以用鼠标对其进行拖拉操作,将图例拖到满意的位置。

(4) 添加文字注释

语法:

text(xt,yt,s) %在图形的(xt,yt)坐标处书写文字注释

7. 特殊符号

图形标识用的希腊字母、数学符号和特殊字符

实验一 Matlab基本操作

实验一Matlab基本操作 题目: 1.利用基本矩阵产生 3x3 和15x8 的单位阵,全1 阵,全0 阵,均匀分布的随 机阵([-1,1]之间),正态分布随机阵(方差4,均值1) 2.利用diag()函数和rot90()产生下列矩阵: 然后求解a 阵的逆矩阵aa 及b 阵的特征值和对应特征向量,并利用reshape 将 aa 阵变换成行向量。 3.产生一均匀分布在(-5,5)随机阵(50x2),精确到小数点后一位。 4.编程实现当α∈[-π,π],间隔为1o 时,求解正弦和余弦的值,并利用plot() 函数绘制正弦,余弦曲线。 5.利用rand 函数产生(0,1)间均匀分布的10x10 随机矩阵a,然后统计a 中大于等于0.6 的元素个数。 6.利用randn 函数产生均值为0,方差为1 的10x10 正态分布随机阵,然后统计其中大于-0.5,小于0.5 的元素个数。 7.编程实现下表功能: 8.有一矩阵a,找出矩阵中其值大于1 的元素,并将他们重新排列成列向量b。 9.在一保定市区9 月份平均气温变化测量矩阵temp_Baoding_sep 中(48x30),存在有奇异值(大于42o C,小于0o C),编程实现删除奇异值所在的行。 10.在给定的100x100 矩阵中,删除整行内容全为0 的行,删除整列内容全为0 的列。 程序: 1. %3X3矩阵 a1=eye(3) a2=ones(3) a3=zeros(3) a4=1-2*rand(3) a5=2*randn(3)+1 %15X8矩阵 b1=eye(15,8) b2=ones(15,8) b3=zeros(15,8) b4=1-2*rand(15,8) b5=2*randn(15,8)+1 运行结果:

Matlab figure 基本操作

Matlab figure基本操作 set(gcf,'Position',[300 300 700 220]); %调整Figure位置和大小。前两个为离屏幕左下角的X,Y距离,后两个值为Figure窗口的宽和高 set(gca,'Position',[.05 .1 .9 .8]); %调整绘图范围(比例关系)。0.05+0.9为横向比例,最大为1;0.1+0.8为纵向比例。0.05和0.1为距离Figure左下角的X,Y距离 figure_FontSize=12; set(gca,'FontSize',figure_FontSize,'FontName','Arial'); xlabel('Distance (m)','FontSize',figure_FontSize,'fontweight','b','FontName','Arial'); ylabel('Thickness (m)','FontSize',figure_FontSize,'fontweight','b','FontName','Arial'); box off; %关闭上和右侧刻度线 grid on; %添加网格线 xkd=[10 20 30]; %定义坐标刻度数量 ykd=[100 200 300]; xkd_label=[1 3 5]; %更改刻度 ykd_label=[100 200 300]; set(gca,'xtick',xkd); set(gca,'xticklabel',xkd_label); set(gca,'ytick',ykd); set(gca,'yticklabel',ykd_label); set(gca,'xscale','log'); %改为对数坐标

实验一 Matlab基本操作及运算

实验一Matlab基本操作及运算 一、实验目的: 1.熟悉MATLAB基本操作 2.掌握矩阵、变量、表达式的各种基本运算 二、实验基本知识: 1.熟悉MATLAB环境 熟悉MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。 2.掌握MATLAB常用命令 3.MATLAB变量与运算符 变量命名规则如下: (1)变量名可以由英语字母、数字和下划线组成 (2)变量名应以英文字母开头 (3)长度不大于31个 (4)区分大小写 MATLAB中设置了一些特殊的变量与常量,列于下表。 MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符

表2 MATLAB算术运算符 表3 MATLAB关系运算符 表4 MATLAB逻辑运算符 表5 MATLAB特殊运算

4. MATLAB的一维、二维数组的访问 表6 子数组访问与赋值常用的相关指令格式 5. MATLAB的基本运算 表7 两种运算指令形式和实质内涵的异同表 6.MATLAB的常用函数

表8 标准数组生成函数 表9 数组操作函数 7.多项式运算 poly——产生特征多项式系数向量 roots——求多项式的根 p=poly2str(c,‘x’)—(将特征多项式系数向量c转换为以习惯方式显示是多项式)conv, convs——多项式乘运算 deconv——多项式除运算 polyder(p)——求p的微分 polyder(a, b)——求多项式a,b乘积的微分 [p,q]=polyder(p1,p2)——求解多项式p1/p2微分的有理分式 poly(p,A)——按数组运算规则求多项式p在自变量A的值 polym(p,A)——按矩阵运算规则求多项式p在自变量A的值

MATLAB 基本操作和简单语句输入

实验一基本操作和简单语句输入 一、实验目的和要求 1、熟悉MATLAB的命令窗口 2、掌握MATLAB的一些基本操作,能够进行一般的数值计算 3、实现语句的重调和修改 二、实验内容和步骤 1、启动MATLAB 2、观察MATLAB窗口的组成部分 (1)了解菜单栏各菜单项的功能,用书变打开MA TLAB的各个菜单,在状态栏里显示当前鼠标所指的菜单项的含义 (2)用鼠标指向常用工具栏的每个工具按钮,了解各个工具按钮的含义 3、命令窗口的打开和关闭 (1)查看窗口的打开和关闭 (2)在命令窗口中输入命令a=3;b=4;y=a*b+a/b,然后回车,查看命令显示结果 (3)利用MATLAB中编辑命令行事常用的按键功能,调出上一语句,对它进行修改(如把分号改成逗号,看运行结果),并把运行结果复制到word中保存。 >> a=3;b=4;y=a*b+a/b, y = 12.7500 >> a=3,b=4,y=a*b+a/b, a = 3 b = 4 y = 12.7500 (4)关闭命令窗口

(5)打开命令窗口 4、使用MATLAB帮助 熟悉MATLAB的帮助系统,通过帮助系统了解有关内容 5、在命令窗口中输入demo,将出现MA TLAB的演示窗,通过演示窗,对MATLAB的功能进一步的浏览。 三、试验环境 计算机MA TLAB软件 四、练习 1、调出MATLAB\stateflow的演示实例

2、计算y=x^3+(x-0.98)^2/(x+1.25)^3-5(x+1/x),x=2,x=3时的值 3、计算cos60?-√(9-√2) 4、已知a=3,A=4,b=a^2,B=b^2-1,c=a+A-2B,C=a+B+2c,求C

matlab入门教程文献

MATLAB入门教程 1.MATLAB的基本知识 1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示:">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。小提示:MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2); 若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MA TLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数

实验一 MATLAB基本操作及运算

实验一 MATLAB 基本操作及运算 一、 实验目的 二、 实验的设备及条件 三、 实验内容 1、 建立以下标量: 1) a=3 2) j ,(j 为虚数单位) 3) c=3/2πj e 2、 建立以下向量: 1) Vb= 2.71382882????????-???? 2) Vc=[4 3.8 … -3.8 -4 ] (向量中的数值从4到-4,步长为-0.2) 3、 建立以下矩阵: 1) 3333Ma ????=?????? L M O M L Ma 为一个7×7的矩阵,其元素全为3. 2) 11191212921020100Mb ??????=?????? L O M M O M L

Mb 为一个10×10的矩阵. 3) 114525173238Mc ????=?????? 4、 使用题1中的变量计算下列等式的x,y,z 的值: 1) ((15)/6)111a x e --=+ 2) 2x π= 3) 3ln([()()]sin(/3))x b c b c a π=+-R ,其中R 表示复数实部。 5、 求解函数值22/(2.25)ct y e -=,其中c 取值见题1,t 的取值范围为题2中行 向量Vc 。 6、 使用题1和题3中所产生的标量和矩阵计算等式 1()()T Mx a Mc Mc Mc -=?? 其中*为矩阵所对应行列式的值,参考det 。 7、 函数的使用和矩阵的访问。 1) 计算矩阵Mb 每一列的和,结果应为行向量形式。 2) 计算整个矩阵Mb 的平均值。 3) 用向量[1 1…1] 替换Mb 的最上一行的值 4) 将矩阵Mb 的第2~5行,第3到9列的元素所构成的矩阵赋值给矩阵SubMb 。 5) 删除矩阵Mb 的第一行; 6) 使用函数rand 产生一个1×10的向量r ,并将r 中值小于0.5的元素设置为0。 8、 已知CellA (1, 1)=‘中国’,CellA (1,2)=‘北京’,CellA (2,1)是一个3乘3的单位阵,CellA (2, 2)=[1 2 3],试用MATLAB 创建一个2×2的细胞数组CellA 。 9、 已知结构数组student 中信息包含有姓名,学号,性别,年龄和班级,试用MATLAB 创建相应的结构数组student 。该数组包含有从自己学号开始连续5个同学的信息(如果学号在你后面的同学不足5个则往前排序),创建完成后查看自己的信息。

Matlab有限元分析操作基础

Matlab 有限元分析20140226 为了用Matlab 进行有限元分析,首先要学会Matlab 基本操作,还要学会使用Matlab 进行有限元分析的基本操作。 1. 复习:上节课分析了弹簧系统 x 推导了系统刚度矩阵 11221 2 1200k k k k k k k k -?? ??-????--+??

2. Matlab有限元分析的基本操作 (1)单元划分(选择何种单元,分成多少个单元,标号)(2)构造单元刚度矩阵(列出…) (3)组装系统刚度矩阵(集成整体刚度矩阵) (4)引入边界条件(消除冗余方程) (5)解方程 (6)后处理(扩展计算)

3. Matlab有限元分析实战【实例1】

分析: 步骤一:单元划分

步骤二:构造单元刚度矩阵 >>k1=SpringElementStiffness(100) >>…?

步骤三:构造系统刚度矩阵 a) 分析SpringAssemble库函数 function y = SpringAssemble(K,k,i,j) % This function assembles the element stiffness % matrix k of the spring with nodes i and j into the % global stiffness matrix K. % function returns the global stiffness matrix K % after the element stiffness matrix k is assembled. K(i,i) = K(i,i) + k(1,1); K(i,j) = K(i,j) + k(1,2); K(j,i) = K(j,i) + k(2,1); K(j,j) = K(j,j) + k(2,2); y = K; b) K是多大矩阵? 今天的系统刚度矩阵是什么? 因为 11 22 1212 k k k k k k k k - ?? ?? - ????--+ ?? 所以 1000100 0200200 100200300 - ?? ?? - ?? ?? -- ?? ?

实验一 MATLAB操作基础

闽 江 学 院 电 子 系 实 验 报 告 学生姓名: 班级: 学 号: 课程:MATLAB 一、 实验题目:MATLAB 操作基础 二、 实验地点:A210 三、 实验目的:1、熟悉MATLAB 的操作环境及基础操作方法。 2、掌握MATLAB 的搜索路径及其设置方法。 3、熟悉MATLAB 帮助信息的查阅方法。 四、 实验内容: 1、先建立自己的工作目录,再将自己的工作目录设置到MATLAB 搜索路径下,在试验用help 命令能否查询到自己的工作目录。 2、在MATLAB 环境下验证例1-1至1-4,并完成以下题目: (1)绘制右图所示图形 (2)求38 3、利用MATLAB 的帮助功能分别查询inv ,plot 、max 、round 等函数的功能及用法。 4、在工作空间建立一个变量a ,同时在当前目录下建立一个M 文件:a.m ,试在命令窗口输入a ,观察结果,并解释原因。 五、 实验环境(使用的软硬件): MATLAB6.5 六、 实验步骤及操作: 1、在D 盘目录下创建新建文件夹“MATLABWORK ”,打开matlab6.5.exe ,点击 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -1-0.8-0.6-0.4-0.200.20.40.60.81

“File”、“Set Path”“Add Folder”找到d:\matlabwork,确定。在命令窗口输入“help”,回车,查询工作目录。 2、(1)在matlab命令窗口中输入 x=0:0.01:1; y=2*pi*x; plot(x,sin(y),(0,1),(-1 1))得出函数图象。 (2)在matlab命令窗口中输入 p=[1 0 0 -8]; x=roots(p)回车,得出结果。 3、在matlab命令窗口中输入 Help inv 回车;help plot回车;help max回车;help round回车查看结果。 七、实验结果: 1.建立自己的工作目录 2.(1)绘制图形

MATLAB的基本操作实验报告

MATLAB 的基本操作(MATLAB Basics ) 1. Plot the following graph (1) Plotting the two curves under one coordinate system with different color sin(), sin(3)y x y x == 代码: clear; x=-pi:pi/1000:pi; y=sin(x); plot(x,y,'r:'); hold on; x=-pi:pi/1000:pi; y=sin(3*x); plot(x,y,'b'); hold off; xlabel('x 轴'); ylabel('y 轴'); legend('y=sinx','y=sin(3x)'); 运行结果: (2) Plotting the standard normal distribution density function: )55(21)(2 2 ≤≤-= -x e x p x π 代码: clear;

MATLAB 的基本操作(MATLAB Basics ) x=-5:0.05:5; y=1/sqrt(2*pi)*exp(-x.^2/2); plot(x,y) 运行结果: (3)Using ‘subplot ’ command to plot 6 curves : )55()6,...,2,1() *sin()(ππ≤≤-==x i x i x f i 代码: clear; x=-5*pi:0.05:5*pi; for i=1:6 subplot(2,3,i); y=sin(i*x); plot(x,y); end 运行结果:

(完整word版)matlab_gui初学者教程

什么是GUI呢? GUI是Graphical User Interface 图形用户界面的意思。象很多高级编程语言一样。Matlab也有图形用户界面开发环境。随着计算机技术的飞速发展。人与计算机的通信方式也发生的很大的变化。从原来的命令行通讯方式(例如很早的DOS系统)变化到了现在的图形界面下的交互方式。而现在绝大多数的应用程序都是在图形化用户界面下运行的。 记得读书的时候。大学开学不久。学校很多同学就开始报考全国计算机等级考试了。当然我也是其中的一分子。其中C语言是大多数人选择的科目。当时在学C语言的时候。经常也会遇到人机交互的例子。譬如一个计算两个数相加的程序。运行程序后便切换到了Dos模式。然后在此模式下输入两个数。再回车。才能返回运算结果。当时就觉得很不方便。也不友好。后来才得知C语言是面向过程的语言。是非面向对象的语言(VC++,VB,Matlab等是面向对象的)。那么下面我们就来看看Matlab是如何简单、快速而友好地解决这类问题的吧。 Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:File/New/GUI 如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框。6个静态文本框。和一个按钮。布置如下图所示;

布置好各控件以后。我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码; 点击上图所示红色方框。选择edit1_Callback。光标便立刻移到下面这段代码的位置。function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double 然后在上面这段代码的下面插入如下代码: %以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字。 则现实空白内容 input = str2num(get(hObject,'String')); %检查输入是否为空. 如果为空,则默认显示为0 if(isempty(input)) set(hObject,'String','0')

MATLAB基本使用方法

基本使用方法 一、简单数学运算 (一)计算器使用方法 a)直接输入法 0.5*pi*5^2 b)存储变量法 a=0.5*pi*5^2 注意: 1)空格不处理 2)遵守四则运算法则 3)多重括号,从里向外运算 4)小括号代表运算级别,中括号生成向量和数组,花括号生成单元数组(二)数学运算符

(三)标点符号的使用 >> a = [1,2,3;4,5,6;7,8,9] 二、常用命令和快捷键

三、数据类型 (一)整数 >>x = int8(50) >>class(x) >>y = 50 >>class(y) 注意: 1)MATLAB默认数据类型为双精度型,定义其它变量类型时需要指定类型 2)整型除法运算时,系统先以双精度进行运算,将结果转为整型 3)不同整型数据不能运算 4)运算结果超出上限或下限,结果取值上限或下限 >>x = int8(100) >>y = int8(90) >>z = x + y (二)浮点数 单精度和双精度浮点数 >>a = single(10.01) >>b = double(10.01) >>class(a) >>class(b) >>eps(‘single’) >>eps(‘double’) >>realmin(‘single’) >>realmax(‘single’) >>realmin(‘double’) >>realmax(‘double’)

(三)复数 >> a = 1 + 2i >> b = complex(1,2) >> c1 = int8([1;2;3;4]) >> c2 = int8([5;6;7;8]) >> c3 = complex(c1,c2) >> d1 = 1 + 0i >> d2 = complex(8,0) >> d3 = complex(9) >> isreal(d1) >> isreal(d2) >> isreal(d3) (四)逻辑变量 1:真; 0:假 >> a = [true, false, true, true, false] >> b1 = magic(3) >> b2 = b1 > 5 >> b3 = sparse(b2) >> d1 = islogical(b1) >> d2 = islogical(b2) >> d3 = islogical(b3) >> A = rand(5) >> B = A>0.5 >> A(B) = 0 >> A = magic(4) >> B = isprime(A) >> A(~B) = 0

相关文档