第3讲 MATLAB程序设计

合集下载

MATLAB程序设计.ppt

MATLAB程序设计.ppt
end 若表达式为真,则执行循环体的内容,执 行后再判断表达式是否为真,若为假则跳出循 环体,向下继续执行,否则继续执行循环体。
3-3 MATLAB程序设计
一、MATLAB的操作与使用
MATLAB的基本数据单元是既不需要指 定维数,也不需要说明数据类型的矩阵(向 量和标量为矩阵的特例),而且数学表达式 和运算规则与通常的习惯相同。因此 MATLAB是一种演算式语言,编程简单,使 用方便。
1. MATLAB语句形式
(1)变量=表达式
(2)表达式
其中表达式是用运算符将有关运算量连接起来 的式子,通过等于符号将表达式的值赋给变量。
表达式的末尾不加“;”时, Matlab系统将会 在语句执行之后,窗口自动显示出语句执行的结果; 加 “;” 时,Matlab系统只把数值赋给变量,不 显示计算结果,此时尽管结果没有显示,但它依然 被赋值并在MATLAB工作空间中分配了内存,以 后可随时显示或调用。
4. 运算符 (1)算术运算符
MATLAB表达式的基本算术运算符
(2)关系运算符
在MATLAB里共有六个关系运算符
关系运算符将生成一个0-1矩阵,当运算数相应元素为真时, 对应位置上生成1,否则为0。
(3)逻辑运算符
结果是一个0-1矩阵。当逻辑表达式的值为真时,赋值1,否
则为0 。
二、绘图
MATLAB提供了丰富的绘图功能,在这里介绍 几种常用的绘图命令。
图形的说明与标记
1.title(‘ ’) 2.xlabel(‘ ’) 3.ylabel(‘ ’) 4.grid on 5.gtext(‘ ’)
%给图形加标题; %x轴的标注; %y轴的标注; %在图上添加坐标轴网格; %使用鼠标增加曲线标记;

实验3 MATLAB程序设计

实验3 MATLAB程序设计

实验3 MATLAB程序设计实验3 MATLAB程序设计一、实验目的本实验的主要目的是通过实际的编程练习,掌握和熟悉MATLAB 程序设计的基本知识和技巧。

通过本实验的学习,能够灵活使用MATLAB进行程序设计,解决实际问题。

二、实验内容1. MATLAB语言基础在本部分,我们将介绍MATLAB语言的基本语法和常用函数的使用方法。

1.1. 变量定义和赋值在MATLAB中,可以通过简单的语法来定义和赋值变量。

例如,`a = 10;`表示将值10赋给变量a。

,MATLAB也支持定义矩阵和向量。

1.2. 数学运算MATLAB提供了丰富的数学运算函数,如加法、减法、乘法、除法等等。

通过这些函数,我们能够进行各种数学运算。

1.3. 条件语句和循环语句条件语句和循环语句在程序设计中非常重要。

在MATLAB中,我们可以使用if-else语句来进行条件判断,使用for循环和while 循环来实现循环操作。

2. MATLAB绘图功能MATLAB的绘图功能非常强大,可以用于绘制各种图形,如曲线图、散点图、柱状图等等。

2.1. 绘制曲线图在MATLAB中,通过`plot`函数可以绘制曲线图。

我们可以指定要绘制的曲线的x和y坐标,并可以设置其他参数,如线型、颜色等。

2.2. 绘制散点图通过`scatter`函数可以绘制散点图。

散点图用于展示数据的分布情况,非常直观。

2.3. 绘制柱状图通过`bar`函数可以绘制柱状图。

柱状图用于比较不同类别或不间点的数据。

3. MATLAB文件操作在实际的程序设计过程中,常常需要读取和写入文件。

MATLAB 提供了相关的文件操作函数,方便我们进行文件的读写操作。

3.1. 文件的读取通过`fopen`函数可以打开一个文件,通过`fread`函数可以读取文件的内容。

3.2. 文件的写入通过`fopen`函数可以创建一个文件,并通过`fwrite`函数将数据写入文件中。

三、实验步骤1. 编写MATLAB程序根据实验内容,编写MATLAB程序实现相应功能。

第三章-Matlab软件的程序设计课件

第三章-Matlab软件的程序设计课件


statements
• elseif expression

statements
• else

statements
• end
PPT学习交流
12
for循环语句
• for语句—般用于循环次数确定的循 环结构,它的调用格式如下:
• for variable = expr, statement, ..., statement end
第三章
之Matlab软件的程序设计
PPT学习交流
1
概述
• 主要介绍如下几个方面的内容:
• (1)M文件的功能和特点;
• (2)编制M文件和M函数文件的基本方法和重要 步骤;
• (3)Matlab软件中流程的控制方法、语句格式和 应用方法;
• (4)典型编程实例的分析与讲解;
• (5)导入与导出数据的基本方法。
19
举例2绘制电机机械转矩与转速函数 曲线
• 一台三相感应电动机,参数分别为:230V,60Hz, 12kW,4极绕线式转子,定子有效电阻R1=0.095, 定子漏电抗X1=0.680,转子漏电抗X2=0.672,磁 化电抗X2=18.7,在转子有效电阻R2=0.1,0.2, 0.5,1.0,1.5和2时,利用Matlab软件绘制电机的 机械转矩Tmech作以r/min为单位的转子转速的函 数时的变化曲线
• 在Matlab命令窗口中键入下面的命令语句:
PPT学习交流
23
PPT学习交流
24
Matlab工具箱的查看方法
• 放入一个目录中的为某种目的专门编写的 一组Matlab函数就可以组成一个工具箱。 从某种意义上说,任何一个Matlab语言的

第3讲 MATLAB程序设计PPT课件

第3讲  MATLAB程序设计PPT课件

2020/8/11
理学院 施三支
3
例3.1 分别建立命令文件和函数文件,将华氏 温度f转换为摄氏温度c。
解:程序1,首先建立命令文件并以文件名 f2c.m存盘:
clear;
%清除工作空间中的变量
f=input('Input Fahrenheit temperature:');
c=5*(f-32)/9
理学院 施三支
16
第3讲 MATLAB
3.1 M 3.2 程序控制结构 3.3 函数文件
2020/8/11
理学院 施三支
1
整体 概述
一 请在这里输入您的主要叙述内容

请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙述内容
2
3.1 M文件
3.1.1 M文件概述
用MATLAB语言编写的程序,称为M文件。 M文件可以根据调用方式的不同分为两类: 命令文件(Script File)和函数文件(Function File)。
2020/8/11
理学院 施三支
10
例3.3 求一元二次方程ax2 +bx+c=0的根。 解:程序如下 a=input('a='); b=input('b='); c=input('c='); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
1.if语句
在MATLAB中,if语句有3种格式:
(1) 单分支if语句: if 条件

《MATLAB程序设计教程》第3章MATLAB程序设计

《MATLAB程序设计教程》第3章MATLAB程序设计

《MATLAB程序设计教程》第3章MATLAB程序设计《MATLAB程序设计教程(第二版)》的第3章主要介绍了MATLAB程序设计的基本概念和基本语法。

本章内容包括MATLAB程序的基本结构、变量的定义和使用、矩阵和向量的操作、条件语句和循环语句的使用、MATLAB函数及其调用、输入和输出等。

首先,本章介绍了MATLAB程序的基本结构。

一个MATLAB程序包含多个部分,包括脚本文件、函数文件、注释等。

脚本文件是由一系列MATLAB语句组成的,按照顺序执行。

函数文件是由函数定义和函数体组成的,可以在其他脚本文件或函数文件中调用。

接着,本章介绍了MATLAB中变量的定义和使用。

MATLAB中的变量是用来存储数据的,可以是数字、字符、字符串等。

变量可以使用等号进行赋值,并且可以进行各种运算操作。

MATLAB中的变量有严格的命名规则和作用域,需要注意命名的规范。

然后,本章介绍了MATLAB中矩阵和向量的操作。

MATLAB可以通过矩阵和向量进行复杂的数值计算。

可以通过矩阵的加减乘除、转置、求逆等操作来实现各种数值运算。

MATLAB还提供了许多便捷的函数来操作矩阵和向量,例如最大最小值、平均值、排序等。

接下来,本章介绍了条件语句和循环语句的使用。

条件语句用来根据条件执行不同的操作,包括if语句和switch语句。

循环语句用来重复执行一段代码,包括for循环、while循环和do-while循环。

这些语句可以有效地控制程序的逻辑流程,并实现各种复杂的计算。

然后,本章介绍了MATLAB函数及其调用。

函数是由一系列语句组成的,可以重复使用。

可以在MATLAB程序中定义自己的函数,并在程序中调用。

函数可以接受输入参数,经过运算后返回输出结果,可以大大提高程序的重复利用性和代码的模块化程度。

最后,本章介绍了MATLAB的输入和输出。

MATLAB可以通过命令窗口进行输入输出,也可以通过文件进行输入输出。

可以使用各种函数来读取和写入数据,包括文本文件、二进制文件等。

《MATLAB程序设计》PPT课件

《MATLAB程序设计》PPT课件

程序2(函数式文件) 首先建立函数文件f2c.m。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 clear; y=input('Input Fahrenheit temperature:'); x=f2c(y) 输出情况为: Input Fahrenheit temperature:70 c= 21.1111 x= 21.1111
2.数据的输出 MATLAB提供的命令窗口输出函 数主要有disp函数,其调用格式为 disp(输出项) 其中输出项既可以为字符串,也可 以为矩阵。
例3-2 输入x,y的值,并将它们的值互换后 输出。 程序如下: x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x); disp(y);
例3-6 某商场对顾客所购买的商品实行打折 销售,标准如下(商品价格用price来表示): price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。
(2) 双分支if语句: if 条件 语句组1 else 语句组2 end 当条件成立时,执行语句组1,否则执行语 句组2,语句组1或语句组2执行后,再执行 if语句的后继语句。
例3-4 计算分段函数的值。 程序如下: x=input('请输入x的值:'); if x<=0 y= (x+sqrt(pi))/exp(2); else y=log(x+sqrt(1+x*x))/2; end Y

03 Matlab程序设计

03 Matlab程序设计

一般调试技术
语句末分号(取消分号) 利用keyboard语句; 函数文件转换为脚本文件 利用调试器:设置断点、单步执行…
调试演示
m文件的创建、执行演示
编写m文件,将华氏温度转换为摄氏温度。
eg3_1.m
%华氏温度转换为摄氏温度 clear; %清除工作空间中的变量 h=input('输入华氏温度:'); c=5*(h-32)/9
演示3
(3)m文件的类型
独立的m文件 — 脚本文件 是一串指令的集合 与在命令窗口逐行执行文件中的指令一样 没有输入输出参数。 可调用的m文件 — 内置函数文件 用户自编函数文件 函数文件
(1)m文件创建方法 系统认可的文本文件编辑器 windows的记事本、word 利用matlab附带的 m文件编辑器
(2)m文件编辑器创建m文件示例
在matlab命令窗口点击file 菜单new → m-file 在编辑窗口输入指令 演示2 保存在工作路径中
m文件的存储路径: 默认路径 :\MATLAB71\work\ 其它路径 自己设定 创建的m文件必须纳入matlab搜索路径, 才能在matlab命令窗口运行。 搜索路径修改演示 m文件的创建、执行演示
第三讲 Matlab 程序设计
张 燕平 09-05-27, 09:44
matlab的工作模式 m文件的创建 m程序的流程控制 参数交互输入 程序设计技术 程序调试
1、matlab的工作模式
(1)指令驱动模式
matlab命令行方式 在命令窗口中执行命令 要点: 一次只能执行一行; 一行中可以有一个或几个语句(逗号分隔); 例: >>x1=0:10 >> x1=0:10,x2=0:3:11

第3章Matlab程序设计精品PPT课件

第3章Matlab程序设计精品PPT课件

顺序结构是指按照程序中语句的排列顺序依次执 行,直到程序的最后一个语句。(最简单的一种 程序)
1、数从据键的盘输输入入数据,则可以使用其in中pu提符t示串函信,数息用来为于一提进个示行字用,
调用格式为:
户输入数据。
A = input(提示信息,选项);
例如:从键盘输入A矩阵,可以采用下面的命令 来完成
A = input(‘输入A矩阵’);
如果在input函数调用时采用’s’选项,则允许用 户输入一个字符串。
例:xm = input(‘What’’s your name?’,’s’);
2020/10/162011-3-4
Matlab Language
10
3.2.1 顺序结构
2、数据的输出 命令窗口输出函数主要有disp函数,其调用格式为: disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。例如: A = ‘Hello, Tom’; disp(A) 输出为:Hello, Tom 又如:A = [1,2,3;4,5,6;7,8,9]; disp(A) 输出为: 123 456 7 8 9 %disp函数输出格式更紧凑
Matlab
工程学院
程序设计的基本步骤
☻ 1.清晰地陈述出你要解决的问题。 ☻ 2.确定程序所需地输入量和程序所产生
的输出量。 ☻ 3.为你的程序设计算法 ☻ 4.将算法转化为MATLAB 语句 ☻ 5.调试MATLAB 程序
2020/10/162011-3-4
Matlab Language
2
Matlab命令的执行方式
2020/10/162011-3-4
Matlab Language
12
3.2.1 顺序结构

第三讲 matlab程序设计

第三讲  matlab程序设计
MATLAB 程序设计
1. 2. 3. 4. 5. 6. 7. 8.
简介 MATLAB的程序类型 建立自己的函数库 变量及其作用域 控制语句 程序调试 数据的输入输出 MATLAB的编程技巧
一、简介
♦ Matlab既是一种语言,又是一种编程环
境。Matlab提供了很多方便用户的工具, 用于管理变量、输入输出数据以及生成 和管理M文件。
Matlab工具箱中含有的一种数量众多的文件,是 用以保存数据的具有标准格式的二进制文件,可被用 来保存当前工作空间中的变量和数据,并可再在需要 时将其方便地调入工作空间参与运算。
♦ MDL文件 Simulink生成的描述模型的文件 MDL文件 ♦ DLL文件 用Mex技术生成的MAT文件 DLL文件 ♦
b=
[m,n] = size(x); mx = mean(x); mcx = zeros(m,n); for i = 1:m mcx(i,:) = (x(i,:) - mx); end
Hale Waihona Puke -3 -3 -3 0 3 c= 4 5 6 0 3 0 3
三、建立自己的函数库
文件与路径管理
♦ what:显示当前目录下所有与matlab相关的文件
♦ edit path

扩展matlab路径,建立自己的函数库
1. 建立自己的工作目录,如: D:\matlab\myfiles 2. 单击命令窗口中的菜单项:file-》set path 3. 在set path对话框中点击add folder…,找到 或输入自己刚才新建的目录,确定即可。 这样,就把新建的目录加入到matlab的 搜索路径中,路径中的文件可以自己在 命令窗口运行,并可以调用matlab环境 中的其它 函数。

MATLAB实用教程第三讲

MATLAB实用教程第三讲

补充:医学图像处理
• MATLAB图像处理工具箱支持四种图像类型,分别为真 彩色图像(RGB)、索引色图像、灰度图像(I)和二值 图像(BW)。许多图像处理工作对图像类型有特定的要 求,比如要对一幅索引图滤波,首先要把它转换成真彩色 图像或灰度图像,直接滤波的结果是毫无意义的。 • 在图像处理工具箱中有类型转换函数可以实现各种图像类 型之间的相互转换,如rgb2gray、ind2gray、im2bw 等。 • 在MATLAB中,改变图像文件格式的方法是:先用阅读 函数将文件读入工作空间,然后用写入函数以适当的格式 保存文件。由此可以方便的实现医学图像格式与其他格式 之间的相互转换,以利于医学图像的传输和应用。
绘制多边形
任意多边形及多边形区域是用Patch对 象表示的,该对象由patch函数创建。 使用patch函数生成面片,有两种方 法,一种是顶点/颜色法,通过指定每个小 面的顶点坐标和颜色来创建;另一种是顶 点/小面法,通过指定所有顶点的坐标和各 小面的顶点和颜色来创建。
绘制文本
文本用Text对象表示,该对象由text函数创 建,text函数是创建文本图形对象的低级函数。使 用它将文本字符串放在指定的位置上。 下面创建多种形式的文本:
例:把一个TIF格式的图像li2.tif转换 成DICOM格式的图像li2.dcm。
x=imread('li2.tif'); %将转换文件读入工作空间 imshow(x) %如图(a)显示的TIF格式图像 st=dicomwrite(x,‘li2.dcm’); %转换为DICOM格式 I=dicomread('li2.dcm'); %读入DICOM文件 imshow(I) %如图(b)显示的DICOM格式图像

MATLAB课件第3章MATLAB程序设计

MATLAB课件第3章MATLAB程序设计
a=1:10; b=[11,12,13,14;15,16,17,18];
c=a;a=b;b=c;
a
b 然后在MATLAB的命令窗口中输入exch,将会执行 该命令文件。
2020/8/11
目录
函数文件
用M文件自定义函数,开头为: function yname = fname(xname) yname: 因变量名,fname: 函数名,xname:自变量 名. 文件名为fname,即与函数名相同. • 与命令文件不同 ,函数文件犹如一个“黑箱”,把一些
目录
例3.4 求一元二次方程ax2 +bx+c=0的根。 程序如下:
a=? 3
a=input('a=?'); b=input('b=?'); b=? 4 c=input('c=?'); c=? 9
d=b*b-4*a*c; x1=-0.66667+1.5986i,x2=-0.66667-1.5986i
已知打折标准为: 商品价格小于200元时,折扣率为0; 商品价格大于或等于200元且小于500时,折扣率为0.03; 商品价格大于或等于500且小于1000元时,折扣率为0.05; 商品价格大于或等于1000且小于2500元时,折扣率为0.08; 商品价格大于或等于2500且小于5000元时,折扣率为0.1; 商品价格大于或等于5000元时,折扣率为0.14; 求所售商品的实际销售价格。if 条源自 语句组1else 语句组2
end 当条件成立时,执行语句组1,否则执行语句 组2,语句组1或语句组2执行后,再执行if语句 的后继语句。
2020/8/11
目录
例3.4计算分段函数值 ycos(x1) x21,x10

matlab第三章程序设计精品PPT课件

matlab第三章程序设计精品PPT课件
当函数执行到最后一条命令或遇到return命令后, 就结束函数的执行,同时函数工作空间的变量被 清除。
例:m_func.m
函数基本格式:
(1)函数定义行(关键字function) function[out1,out2,..]=(in1,in2,..) 输入和输出(返回)的参数个数分别由nargin和 nargout两个MATLAB保留的变量来给出。
第三章 MATLAB程序设计
一、MATLBA程序的 基本设计原则
1、%后面的内容是程序的注解,要善于运用注解使程序更 具可读性。
2、养成在主程序开头用clear指令清除变量的习惯,以消除 工作空间中其他变量对程序运行的影响。但注意在子程序 中不要用clear。
3、参数值要集中放在程序的开始部分,以便维护。要充分 利用MATLAB工具箱提供的指令来执行所要进行的运算, 在语句行之后输入分号使其及中间结果不在屏幕上显示, 以提高执行速度。
例:m_prog.m
(3)函数文件 各种工具箱的内部函数基本都是M函数文件,用 户也可以自己编写一组M函数文件组成工具箱。
M函数文件的第一行必须包括function,每一个M函 数文件都至少要定义一个函数。
函数可以接受输入变量,并将运算结果送到输出变 量
函数具有单独的工作空间,函数体内使用的除返回 和输入变量外的所有变量都是局部变量,只在函 数工作空间中存在。
绿色:注解;
黑色:程序主体;
红色:属性值的设定; 蓝色:控制流程。
编辑功能与大多数编辑器类似,都有复制、粘贴、查找、加 注释、缩进等功能
具有程序调试功能:设置断点、单步执行、连续执行等
在运行程序之前,必须设置好MATLAB的工作路径,使得所要 运行的程序及运行程序所需要的其他文件处在当前目录之 下,只有这样,才可以使程序得以正常运行。否则可能导 致无法读取某些系统文件或数据,从而程序无法执行。

Matlab教程Ch3程序设计

Matlab教程Ch3程序设计

条件
程序模块
不成立 成立
3.2.2 选择结构
在MATLAB中,循环结构可 中 以由两种语句结构实现: 以由两种语句结构实现:
for语句循环结构 while语句循环结构
13
1.for语句循环结构 . 语句循环结构
for循环变量=起始值:步长:终止值 循环变量=起始值:步长: 循环变量 循环体 end
3.5函数与变量参数传递 函数与变量参数传递
3.5.1子函数与私有函数 3.5.2变量作用域 3.5.3函数的参数传递
21
上机指导
3.6 M文件的调试 文件的调试
3.7 M文件性能分析与优化 文件性能分析与优化
3.7.1 M文件性能分析 3.7.2 M文件性能优化
22
应用举例
求1!+2!+3!+ … +5!的值 ! ! ! !
又称为脚本文件,是一串指令的集合。 又称为脚本文件,是一串指令的集合。 用户只需键入该命令文件的文件名, 用户只需键入该命令文件的文件名,系统就会 自动逐行执行该文件中的各条语句。 自动逐行执行该文件中的各条语句。 适用于小规模运算。 适用于小规模运算。
19
3.3.2函数文件 函数文件
函数文件基本格式: 函数文件基本格式:
(2) 多分支 语句:超过 个的选择 多分支if语句 超过2个的选择 语句:
if表达式1 程序模块1 elseif 表达式2 程序模块2 … elseif 表达式n 程序模块n else 程序模块n+1 end
9
例:将百分制的学生成绩转换为五级制的成绩输出
clear n=input('输入 '); 输入n= 输入 if n>=90 r='A' elseif n>=80 r='B' elseif n>=70 r='C' elseif n>=60 r='D' else r='E' end

Matlab课件教程2第3章程序设计

Matlab课件教程2第3章程序设计

3.2 控制语句
• 3.2.1 表达式、表达式语句与赋值语句 • 1.表达式 • 2.表达式语句 • 2.赋值语句
3.2.2 程序流程控制语句
• 1.循环语句 • 2.选择语句 • 3.分支语句
3.2.3 程序流程控制指令
• 中断命令break • return指令 • 等待用户反文件是使用MATLAB语言编写的程序代码 文件。之所以称为M文件,是因为这种文件 都以“.m”作为文件扩展名。用户可以通过 任何文本编辑器或字处理器来生成或编辑M 文件,但是在MATLAB提供的M文件编辑器 中生成或编辑M文件是最为简单、方便而且 高效的。
3.1.1 命令式文件
3.2.4 人机交互语句
• echo命令 • input命令 • keyboard命令
3.2.5 MATLAB程序的调试命令
• dbstop命令 • dbcont命令 • dbstep命令 • dbstack命令 • dbstatus命令 • dbtype命令 • dbquit命令
3.3 函数变量及其作用域
• 在MATLAB中,实现某项功能的一串 MATLAB语句命令余函数组合成的文件叫命 令式文件。这种M文件在MATLAB的工作空 间内对数据进行操作,能在MATLAB环境下 直接执行。命令式文件不仅能够对工作空 间内已存在的变量进行操作,并能将建立 的变量及其执行后的结果保存在MATLAB工 作空间里,供在以后的计算中使用。
3.1.2 函数式文件
• MATLAB函数通常是指MATLAB系统中以设 计好的完成某一种特定的运算或实现某一 特定功能的一个子程序。MATLAB函数或函 数文件是MATLAB语言中最重要的组成部分, MATLAB提供的各种各样的工具箱几乎都是 以函数形式给出的。MATLAB的工具箱是内 容极为丰富的函数库,可以实现各种各样 的功能。

MATLAB程序设计

MATLAB程序设计

MATLAB程序设计
一、MATLAB程序设计概述
MATLAB(Matrix Laboratory)是一种高级的科学和数学计算软件,主要应用于数学计算、可视化和编程。

MATLAB的强大功能使它成为广泛应用于数学、物理、工程、金融、生物信息等领域的工具。

它还可用于设计、测试和部署可靠、可维护的应用程序。

MATLAB除了提供了大量的函数及命令,还支持用户自定义函数,因此,MATLAB程序设计就成为了MATLAB的重要组成部分。

MATLAB程序设计是一种编写代码来完成特定任务的过程。

它的代码可以与MATLAB内置的函数和命令一起使用,以执行任务,并将结果传递给MATLAB的后续任务。

MATLAB程序设计的代码也可以被称为“脚本”,它可以用于自定义函数,以实现特定任务,或者可以被组合在一起以构建更复杂的应用程序。

二、MATLAB程序设计的基础
要成功编写程序,必须充分理解MATLAB的基本组成部分,以及如何将它们结合在一起。

MATLAB程序设计的基本要素包括:变量、矩阵、函数、程序流程控制、调试等。

变量:变量是MATLAB的基本构造块,可以用来存储任何信息。

MATLAB中定义变量时,只需要指定变量的名称,以及它的类型(数字、字符串、逻辑等)。

矩阵:矩阵是MATLAB中的数据结构,是一种多维数据集合。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.打开已有的M文件 打开已有的M文件,也有3种方法: (1) 菜单操作。 从MATLAB主窗口的File菜单中选择Open命 令,则屏幕出现Open对话框,在Open对话框 中选中所需打开的M文件。 (2) 命令操作。 在MATLAB命令窗口输入命令:edit 文件名 (3) 命令按钮操作。 单击MATLAB主窗口工具栏上的Open File命 令按钮。
3.2.3 switch-case 结构 switch ex case test1 命令组1; case test2 命令组2; otherwise 命令组3; end
注:case 后面的值可以是 标量,字符串,单元数组。 为单元数组时,MATLAB 把ex的值和单元数组的每 一个元素做比较,只要有 一个元素匹配就执行对应 的命令组。
例:3.3.2 利用函数的递归调用,求n!。 递归调用函数文件factor.m如下: function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; %递归调用求(n-1)! end
输入输出参数个数的可调性
在调用函数时,可用函数nargin和 nargout获取调用该函数时的输入实参 和输出实参的个数。 只要在函数文件中包含这两个变量,就 可以准确地知道该函数文件被调用时 的输入输出参数个数,从而决定函数 如何进行处理。
3.3 函数文件
函数文件的特点 (1)函数文件的第1行总是以“function”引导的函数声明行, 该行罗列出输入形参和输出变量,输入形参和输出变量数 量无限制,也可以都没有,其它部分的机构与命令文件相 同 (2) 函数文件运行时,所有产生的变量都存放到一个临时的 工作空间中,该函数文件结束运行时,该临时工作空间被 清除,这个临时工作空间成为该函数的工作空间。 (3) 一般情况下,函数文件名和该文件中的主函数同名,若 不一致,MATLAB将以函数文件名为准。
例3.3.3 nargin用法示例。 函数文件 charray.m: function fout=charray(a,b,c) if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end
命令文件:mydemo.m: x=[1:3]; y=[1;2;3]; charray(x) charray(x,y') charray(x,y,3)
3.2 程序控制语句
3.2.1 for 循环结构 for x=array 循环体; end 说明:x是循环变量,for 语句和end之间是循环体,循环次 数由数组array的列数指定。 注: 1.循环不会因为在循环体内对循环变量的改变而结束 2.为使代码高效,应尽量提高代码的向量化程度,避免使 用循环结构
局部变量和全局变量 (1) 局部变量产生于相应函数的运行过程中, 存在于相应函数执行时的工作空间中,其 影响范围也仅限于该函数本身 (2)全局变量是在所有的工作空间中都可以访 问的变量,并且必须在使用前用globel定义
例3.3.4 全局变量应用示例。 先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y; 在命令窗口中输入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2)
例3.2.1:for n=10:-1:1 n=100 end 例3.2.2: for n=[2,1.1,3.2,5] n n=10 end 例3.2.3 for n=magic(3) n end
例3.2.4 比较下列两个程序结果
1. a=magic(1000); s=0; t=cputime; for n=1:1000 for m=1:1000 s=s+a(n,m); end end t=cputime-t
函数文件的调用 格式是: [输出实参表]=函数名(输入实参表)
例3.3.1利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。 函数文件tran.m: function [rho,theta]=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x); 调用tran.m的命令文件main1.m: clear x=input('Please input x=:'); y=input('Please input y=:'); [rho,theta]=tran(x,y); rho theta 在MATLAB中,函数可以嵌套调用,即一个函数可以调用别的函数, 甚至调用它自身。一个函数调用它自身称为函数的递归调用。
例: switch ‘a’ case ‘d’ disp(‘case 1’) case {‘a’,’b’} disp(‘case 2’); case {‘a’,’c’} disp(‘case 3’) end
3.2.4 try-catch 结构 try 命令组1; catch 命令组2; end
注: 1.命令组1总被执行,执行 时若有错,才执行命令组2
当一个函数调用发生时, MATLAB先对函
数的每一个局部变量进行分析,确定函数 的哪些局部变量进行了修改。
如果函数修改了这个局部变量的值,将会复制 对应实参 生成一个副本,然后把它们传递给函数。 如果函数没有修改这个局部变量的值,它将不会对此参 数进行复制,而是简单地指向程序外面的外面的变量.
函数文件示例: function [s,p]=fcircle(r) %fcircle calculate the area and perimeter of a circle of radii r %r radii %s area %p perimeter
%2008-8-8
s=pi*r*r; p=2*pi*r;
2. a=magic(1000); t=cputime ; s=sum(sum(a)); t=cputime-t
3.2.2 while 循环结构 格式: while表达式 循环体; end 说明:若表达式的值为逻辑真(非零),则执行循环 体,直到 表达式的值为假,就结束循环。 注: 1.一般情况下,表达式的值都是标量值,但是 MATLAB允许 它为一个数组,此时只有当该数组元素均为真时, MATLAB才会执行循环体 2.如while指令后的表达式为空数组,MATLAB认为表达式的 值为假,而不执行循环体。
2.可调用lasterr函数查询出 错原因,如果函数lasterr的 运行结果是一个空字符串, 表明命令组1执行正确
3. 当执行命令组2时又出错, MATLAB将终止该结构。
例:clear; N=4;A=magic(3); try A_N=A(N,:); catch A_end=A(end,:); end lasterr
3.1.2 M文件的建立与打开
M文件是一个文本文件,它可以用任何编辑程序 来建立和编辑,而一般常用且最为方便的是使用 MATLAB提供的文本编辑器。 1.启动MATLAB文本编辑器有3种方法: (1) 菜单操作。 从MATLAB主窗口的File菜单中选择New菜单项, 再选择M-file命令。 (2) 命令操作。 在MATLAB命令窗口输入命令edit, (3) 命令按钮操作。 单击MATLAB主窗口工具栏上的New M-File命令 按钮。
第3讲MATLAB程序设计 3.1 脚本文件 3.2 程序控制语句 3.3函数文件 3.4程序调试
3.1 脚本文件
3.1.1 M文件概述 用MATLAB语言编写的程序,称为M 文件。M文件分为两类: 1. 脚本文件(Script File) 2. 函数文件(Function File)。
脚本文件的特点 1.是一串按用户意图排列而成的MATLAB指 令集; 2. 脚本文件运行后,所产生的变量都驻留 在MATLAB工作空间中。故一般脚本文件 的正文部分都以clear命令开头,已清空当 前的工作空间。
脚本文件的结构 (1)在线帮文本(help text): 以%开头的注释行, 它包含对对本文件的功能的简要描述,供 lookfor关键字查询和help在线帮助使用。 (2)编写和修改记录: 与在线帮助文本相隔一 个空行,以%开头,记录该文件的作者和日 期,版本记录。 (3) 文件体,与前面注释部分以空行相隔, 为脚本文件的主体内容。
命令文件示例: % Fahrenheit temperature to Celsius temperature % f: Fahrenheit temperature % c: Celsius temperature %c : written by xxx, version: 1.1 clear; %清除工作空间中的变量 f=input('Input Fahrenheit temperature:'); c=5*(f-32)/9
全局变量占用的是全局内存,传递时不做
复制,故全局变量尤其适用于在许多函数 分享大容量数据。
内联函数 格式:g = inline(‘expr’,’arg1’,’arg2’,...) 例:f=inline(‘x^2’,’x’) f(0.4)
MATLAB 中的按值传递机制
例:sample.m的内容: function out = sample(a, b) fprintf('In Sample: a = %f, b = %f %f\n',a,b); a = b(1) + 2*a; b = a .* b; out = a + b(1); fprintf('In Sample: a = %f, b = %f %f \n',a,b); 下面是调用这个函数的命令文件:test_sample.m a = 2; b = [6 4]; fprintf('Before sample: a = %f, b = %f %f\n', a, b); out = sample(a, b); fprintf('After sample: a = %f, b = %f %f\n',a,b); fprintf('After sample: out = %f \n', out); 当这个程序被执行将产生如下的结果: >> test_sample Before sample: a = 2.000000, b = 6.000000 4.000000 In Sample: a = 2.000000, b = 6.000000 4.000000 In Sample: a = 10.000000, b = 60.000000 40.000000 After sample: a = 2.000000, b = 6.000000 4.000000 After sample: out
相关文档
最新文档