MATLAB第5章程序设计.jsp
MATLAB程序设计PPT课件
y=sum(x)/length(x);
2021/5/8
9
保存该文件(保存时函数名和文件名必须一致, 否则,调用函数时需要使用文件名称而非函数名 称),调用此函数时在命令窗口输入如下命令:
>> x=[1 2 3];
>>y=average(x)
y=
2
上述函数第一行为函数定义行, 定义了函数名称 average、输入变量x和输出变量y,其中 function
function行中输入输出参数名可以和调用时的参数不同名。
当有多个变量输入输出时;
function [y1,…,yn]=fun(x1,x2,x3)
当不含输出变量时,可以直接省略输出部分或用空方括号表示:
function printresults(x)
function []=printresults(x)
第5章 MATLAB程序设计
2021/5/8
1
MATLAB作为一种应用广泛的科学计算软件,不 仅具有强大的数值计算、数据可视化功能,而且 具有强大的程序设计功能。通过编写扩展名为.m 的M文件,用户可以实现各种复杂的功能,且 MATLAB语言语法简单,库函数丰富,程序易于 调试,极大方便了用户的开发过程。
在命令行键入文件名,Matlab会打开这一脚 本文件,并执行文件内容。
脚本文件不包含输入参数和输出参数,通 常由M文件正文和注释部分构成,文件正文 主要实现特定功能,而注释是给出代码说 明,便于阅读。
2021/5/8
5
【例5-1】脚本文件。 g=0:0.5:20; %创建一维向量
X=sin(g);
%y=average(x) %其中,x为向量,y为计算得到向量元素的均值 %若输入参数为非向量则出错 %代码行
第五讲MATLAB程序设计ppt课件
语句组m
otherwise
语句组n
end
(exswitch.m)
第五讲 MATLAB程序设计
18
(3)try语句 语句格式为: try
语句组1 catch
语句组2 end
try语句先试探性执行语句组1,如果语句组1在执行 过程中出现错误,则将错误信息赋给保留的lasterr 变量,并转去执行语句组2。
第五讲 MATLAB程序设计
14
2、选择结构
(1) 条件分支语句——if语句 在MATLAB中,if语句有3种格式。 1) 单分支if语句: if 条件 语句组
end
第五讲 MATLAB程序设计
15
2) 双分支if语句: if 条件
语句组1 else
语句组2 end
第五讲 MATLAB程序设计
16
第五讲 MATLAB程序设计
24
三、程序调试
1 错误分类
一般来说,应用程序的错误有两类:
一类是语法错误,例如函数名的拼写错、表达式 书写错等。
另一类是运行时的错误。指程序的运行结果有错 误,这类错误也称为逻辑错误。
第五讲 MATLAB程序设计
25
2、查找逻辑错误的方法:
◆ 删去语句行末的分号,使显示其运行中间结果 ◆ 利用keyboard 命令实现,return继续程序执行 ◆ 注释掉M 函数文件的函数定义行,使函数文件转
第五讲 MATLAB程序设计
19
例: 矩阵乘法运算要求两矩阵的维数相容,否则会 出 错。先求两矩阵的乘积,若出错,则自动转去 求两矩阵的点乘。(extry.m)
第五讲 MATLAB程序设计
20
3、 循环结构
(1)硬循环语句——for语句
MATLAB5程序设计
例5.2 建立一个函数文件将变量a,b的值互换,然 后在命令窗口调用该函数文件。 首先建立函数文件e2.m: function [a,b]=e2(a,b) % ee2 c=a;a=b;b=c; 调用:[a,b]=e2(2,3) 然后在MATLAB的命令窗口调用该函数文件: clear; x=1:10; y=[11,12,13,14;15,16,17,18]; 目录 [x,y]=e2(x,y)
由上例可以看出函数文件的一般格式为:
function [输出表]=函数名(输入表) 注释说明部分 函数体语句 函数文件的第一行必须是以关键字function 开始,表明该文件是函数文件.输入表是以 逗号相分隔的形参.输出表是函数的返回 值.如果返回值只有一个方括号可以省略; 如果返回值不止一个,输出表中的各个变量 要以逗号隔开.
命令文件
M命令文件的特点是:
命令文件的构成比较简单,只是一串按用户意
图排列而成的(包括控制流和指令在内的) MATLAB指令集合 M文件中定义的变量为全局变量.命令文件运行 后 ,所产生的所有变量都驻留在 MATLAB基本 工作空间( workspace)中。只要用户不使用 清除指令(clear), MATLAB指令窗不关闭, 这些变量将一直保存在基本工作空间中
函数调用
函数调用的一般格式是: [输出实参表]=函数名(输入实参表)
例5.5 利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间 的转换。 函数文件tran.m: function [rho,theta]=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x);
disp(x) 显示x的内容,与x 的区别是: 前者仅显示x的内容,后者多个"x=".
MATLAB程序设计与应用-第五章
MATLAB在命令窗口输入命guide 在操作桌面上展开启动平台窗口中树状列表的MATLAB,选择其中的GUIDE选项点击OK按钮,打开布局编辑器布局编辑器窗口改变大小用鼠标在界面上添加一个可编辑文本框,两个静态文本框,两个按钮。
点击保存后,生成两个文件:exam5_1.flg 仅用于保存图形界面。
删除一些注释后,exam5_1的代码如图,该页为程序初始化代码此为控件功能代码此为控件初始化代码选择工具栏中的排列工具图标即可打开排列工排列工具分为对控件对象垂直和水平两个方向几何位置的排列。
每个方向又分为位置调整和5.1 图形用户界面开发环境->Tools->Menu Editor…->View->Object Brower…5.1 图形用户界面开发环境三、开发工具窗口5、Tab顺序编辑器(Tab Order Editor)工具栏-> Tools-> Tab Order Editor...Tab顺序编辑器,当需要修改用户按下“Tab”键来改变焦点的顺序时使用该编辑器。
M-file editorM-file 编辑器Tab order editorTab顺序编辑器在MATLAB最近的几个版本中,布局编辑器提供了M-file编辑器的连接。
一、控件介绍一、控件介绍5.2 控件对象及属性对话框实例:exam5_1_2.m 对话框实例:exam5_1_2.m关键代码如上图所示界面设计好后,修改相关属性修改后汉字不显示,只有方框。
运行后界面如图,此时点击按钮没有任何作用。
修改前修改后修改前后对象属性变化情况exam5_1.m在上述位置加入红色线框内的代码,保存,执行结果见下图在登陆框内输入刘备,点击登陆,出现欢迎界面。
点击取消,欢迎词消失。
5.4 图形用户界面程序设计各控件属性值如图关键程序代码如上图程序运行结果,正确检测出混合正弦曲线中的频率分别为50Context 菜单。
选择它后,主菜单后,可以单击第Context 主菜单的子菜单。
MATLAB课件-第五章MATLAB程序设计
程序如下: price=input('请输入商品价格'); 请输入商品价格1000 switch fix(price/100) case {0,1} %价格小于200 rate=0; case {2,3,4} %价格大于等于200但小于500 price = rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; 920 case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格
3.try语句 语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行 过程中出现错误,则将错误信息赋给保留的lasterr 变量,并转去执行语句组2。
例5-6 矩阵乘法运算要求两矩阵的维数相容,否则会出 错。先求两矩阵的乘积,若出错,则自动转去求两矩 阵的点乘。 程序如下: A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; C= try C=A*B; catch 7 16 27 C=A.*B; 40 55 72 end C ans = lasterr %显示出错原因
2.switch语句 switch语句根据表达式的取值不同,分别执行不同的语句,其语 句格式为: switch 表达式 当表达式的值等于表达式1 的值时,执行语句组1,当 case 表达式1 表达式的值等于表达式2的 语句组1 值时,执行语句组2,…, case 表达式2 当表达式的值等于表达式m 语句组2 的值时,执行语句组m,当 …… 表达式的值不等于case所列 的表达式的值时,执行语句 case 表达式m 组n。当任意一个分支的语 语句组m 句执行完后,直接执行 otherwise switch语句的下一句。 语句组n end
杭州电子科大,MATLAB经典教程。第五章 程序设计
概述(函数)
内建函数: (Build-in)函数,这类函数是由MATLAB 的内核提供的,能够完成基本的运算,例如三角函数, 矩阵运算的函数等.(应该是有经过优化的,运算速度 比较快.) 高级语言开发的函数:用户自己开发的函数,由此 基础上可以构成专用领域的toolbox,或者针对某个具体 任务的application.
5.2 函数
1)函数的语法格式: )函数的语法格式: function [out1,out2,…] = fun(in1,in2,…) 函数名:fun 输入变量: in1,in2,…等 输出变量:out1,out2,… note: 1)注意[],()的区别. 2)函数的命名与变量的命名最好能反映其 "语义".
meditor:为了方便编辑M文件,MATLAB也提供了一个 编辑器,叫作meditor,它也是系统默认的M文件编辑器. *.m 文件是文本文件,所以任何一个文本编辑器都可以 编辑它. note:一个完成的集成开发环境 ( IDE) 应该包括编 集成开发环境( ) 编 集成开发环境 编译,调试等功能.Meditor提供了编辑,调试的功 辑,编译,调试 能.因为它是解释性语言,因此一般的m文件不经过编 译环节.
1)for ) d)for循环可按需要嵌套 ) 循环可按需要嵌套 例子3: 例子 : 公元前五世纪我国古代数学家张丘建在 算经》一书中提出了"百鸡问题" 鸡翁一值钱五, 《算经》一书中提出了"百鸡问题":鸡翁一值钱五, 鸡母一值钱三,鸡雏三值钱一.百钱买百鸡,问鸡翁, 鸡母一值钱三,鸡雏三值钱一.百钱买百鸡,问鸡翁, 雏各几何? 母,雏各几何? 如何编程实现? 如何编程实现?
概
述
M语言:MATLAB提供了完整的编写应用程序的能力, 这种能力通过一种被称为M语言的高级语言来实现. 解释型语言 M文件:一个M语言文件就是由若干MATLAB的命令组 合在一起构成的,这些命令都是在前面章节中介绍的合 法的MATLAB命令.其文件的扩展名为.m. 2 种形式:命令式,函数式;前者是命令行的简单叠加; 后者则用以解决参数传递和函数调用的问题.
matlab基础 matlab程序设计
自动逐行执行该文件中的各条语句
函数文件基本格式:
function [输出形参列表]=函数名(输入形参列表) 注释说明语句段 程序语句段
end
26
函数内容: (1)第一行帮助行,即H1行
7
5.2.1顺序结构
程序模块1 程序模块2
MATLAB中实现顺序结构的方法非常简单:
只需将程序语句顺序排列即可
8
example.m文件 theta=-pi:0.01:pi; rho(1,:)=2*sin(5*theta).^2; polar(theta,rho(1,:))
执行>>example
%子程序sumhe.m %sumhe(a,b) sum the serial of numbers from a tob function result=sumhe(a,b) result=a+b; end
30
5.4局部变量和全局变量
●如果一个函数内的变量没有特别声明,那么这 个变量只在函数内部使用,即为局部变量。
end
(2) 多分支if语句:超过2个的选择
if表达式1 程序模块1 elseif 表达式2 程序模块2 … elseif 表达式n 程序模块n
else 程序模块n+1
end
12
例:将百分制的学生成绩转换为五级制的成绩输出
clear n=input('输入n= '); if n>=90
r='A' elseif n>=80
46
THANK YOU!
●如果两个或多个函数共用一个变量(或者说在函 数程序中也要用到主程序中的变量,注意不是 参数),那么可以用global来将它声明为全局变 量。
matlab程序设计教程
matlab程序设计教程Matlab是一种强大的科学计算和数据分析工具,它提供了丰富的函数库和灵活的编程环境,使得用户可以方便地进行各种数学计算和数据处理。
本篇文章将为大家介绍Matlab程序设计的基本概念和操作步骤。
首先,我们需要了解Matlab的基本语法和编程元素。
Matlab 程序由语句和函数构成,语句是实现具体功能的基本单位,函数则是对语句进行封装和重用的机制。
Matlab采用类似于C 语言的结构化编程风格,包括顺序、选择和循环三种基本的控制结构。
此外,Matlab还支持向量化操作和矩阵运算,可以大大简化程序的编写和运算的复杂度。
其次,我们需要了解Matlab的开发环境和常用工具。
Matlab 提供了一个交互式的命令窗口,用户可以直接在命令行输入和执行Matlab语句。
除此之外,Matlab还提供了一个集成的开发环境,可以方便地编辑、调试和运行Matlab程序。
开发环境中还包括了各种工具箱,可以扩展Matlab的功能,如信号处理、图像处理、控制系统等。
接下来,我们将介绍Matlab程序的编写和调试过程。
在编写Matlab程序时,我们首先需要确定程序的功能和数据结构,然后选择合适的函数和语句来实现。
编写完成后,我们可以在命令窗口中运行程序,观察程序的输出结果是否满足预期。
如果发现程序出现了错误或不符合预期,我们可以使用Matlab 提供的调试工具来进行调试和排错。
调试工具包括断点、单步执行、变量监视等功能,可以帮助我们分析程序的执行过程和找到问题所在。
最后,我们需要注意Matlab程序的性能和代码优化。
Matlab是一种解释性语言,相对于编译型语言来说,其执行速度较慢。
为了提高程序的性能,我们可以使用向量化操作和矩阵运算来减少循环和临时变量的使用。
此外,我们还可以使用Matlab提供的性能分析工具来找出程序的瓶颈,并进行相应的算法优化和代码改进。
综上所述,Matlab程序设计是一项强大而灵活的任务,它能够帮助我们解决各种科学计算和数据分析问题。
Matlab05程序设计
程序调试
程序的错误:
① 语法错误(Syntax Errors) ② 逻辑错误(Logic Errors)
语法错误
变量名与函数名的误写、标点符号的
缺漏和end的漏写等,这类错误,
Matlab在运行时都能发现,终止执行
并报错,容易改正。
逻辑错误
可能是程序算法问题,也可能是
Matlab指令使用不当,导致最终获得
clear; sco=input('请输入成绩\n'); x=floor(sco/10); switch x case {9,10} disp('成绩为A'); case 8 disp('成绩为B'); case 7 disp('成绩为C'); case 6 disp('成绩为D'); case {0,1,2,3,4,5} disp('成绩为E'); otherwise disp('无效分数'); end
2 流程控制语句
1.顺序结构
2.循环结构
3.选择结构
顺序语句
• 顺序结构是指按照程序中语句的排列顺 序依次执行,直到程序的最后一个语句
disp:输出函数
输出项既可以为字符串,也可以为矩阵。
>>A = ‘Hello, Tom’; >>A = [1,2,3;4,5,6;7,8,9]; >>disp(A) >>disp(A)
工具调试法
1.设置断点。制定程序代码的断点,使得 Matlab可在断点前停止执行,从而可以检查 各个局部变量的值。
dbstop in file在第一个可执行语句前设置断点 dbstop in file at location在location行设置断点 dbstop in mfile at subfun当程序执行到子程序 subfun时,暂时中止执行,并设断点 dbstop if error遇到错误时,终止M文件运行, 并停在错误行
第5章matlab程序设计
§5.3 函数文件
5.3.2 函数调用 函数调用旳一般格式为 [输出实参表]=函数名(输入实参表) 函数调用时各实参出现旳顺序、个数,应与函
数定义时形参旳顺序、个数一致,不然会犯错。 函数调用时,先将实参传递给相应旳形参,从而 实现参数传递,然后再执行函数旳功能。
§5.3 函数文件
注意: varargin和varargout必须出目前参数列表旳
最终,即函数调用必须首先指定必要旳参数。例 如,下面旳函数申明行显示了varargin和 varargout旳正确位置: function[out1,out2]=example1(a,b,varargin) function[i,j,varargout]=example2(x1,y1,x2,y2, flag)
§5.3 函数文件
全局变量用global命令定义,格式为 global 变量名
【例5.19】全局变量应用示例。 先建立函数文件wadd.m,该函数将输入旳参数
加权相加。 function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y;
§5.3 函数文件
使用它பைடு நூலகம்
§5.3 函数文件
%函数体——一般从第一种空白行开始 %注释——描述函数旳行为,输入输出旳类型等 %在命令行中键入“help<functionname>”时不会
显示注释文本 X=prod(a,b) %开始编写函数代码
一种完整旳函数式M文件应该涉及定义行、H1 行、帮助文本、函数体、注释和函数代码等内容, 其中函数定义行和函数代码是必需旳。
§5.3 函数文件
命令文件main3.m x=examp(1:3) y=examp(1:3,4:6) z=examp(1:3,[1;2;3],15)
第5掌 MATLAB程序设计及应用实例2
matlab用户可以根据需要编辑自己的m文件,
它们可以像库函数一样方便的调用,从而极大地
扩展了matlab 的能力。 对于某一类特殊问题,如创建了许多m函数文件, 则可形成新的工具箱。 用matlab语言创建定义新的matlab函数的功 能,正体现了matlab语言强大的扩展功能。
5.4 选择结构-try语句
语句格式为: try 语句组1 catch 语句组2 end
try语句先试探性执行语句组1,如果语句组1在执行过 程中出现错误,则将错误信息赋给保留的lasterr变量, 并转去执行语句组2。这种试探性执行语句是其他高级 语言所没有的。
例 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先 求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘
函数的递归调用 例:利用递归调用函数文件factor.m: function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; end 然后在MATLAB命令窗口调用该函数:
f=factor(5)
f=5!
(2)函数文件的调用
函数所传递参数的可调性
条件 语句组
2.双分支if语句
双分支if语句格式为:
if 条件 语句组1 语句组2 end 当条件成立时,执行语句组1,否则执行语句组 2,语句组1或语句组2执行后,再执行if语句的 后继语句。
else
例 计算分段函数值
程序如下: x=input('请输入x的值:'); if x==10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x)); end y
matlab程序设计
matlab程序设计Matlab程序设计是一门应用广泛的编程语言,被广泛应用于科学计算、数据分析、信号处理等领域。
本文将从Matlab程序设计的基本原理、应用场景、优势以及学习方法等方面进行讨论,帮助读者更好地理解和运用Matlab进行程序设计。
一、Matlab程序设计的基本原理Matlab是Matrix Laboratory的缩写,它是一种高级的解释型编程语言,主要用于数值计算和数据可视化。
Matlab的编程思想以矩阵运算为核心,通过对矩阵进行各种运算和操作来实现复杂的计算任务。
Matlab具有简洁的语法和丰富的内置函数库,使得程序设计变得简单而高效。
二、Matlab程序设计的应用场景Matlab的应用场景非常广泛,几乎涵盖了各个科学领域。
在工程领域,Matlab可用于信号处理、图像处理、控制系统设计等方面;在经济学领域,Matlab可用于经济模型建立、金融数据分析等方面;在生物医学领域,Matlab可用于医学图像处理、生物信号处理等方面。
此外,Matlab还可用于教育、科研、数据分析等方面。
总之,无论是在学术研究还是在工程实践中,Matlab都扮演着重要的角色。
三、Matlab程序设计的优势Matlab具有以下几个优势:1. 简单易学:Matlab的语法简单易懂,初学者可以很快上手。
2. 功能强大:Matlab拥有丰富的内置函数库,可以完成各种复杂的计算任务。
3. 可视化能力强:Matlab可以生成高质量的图形和动画,有助于数据的分析和展示。
4. 平台无关性:Matlab可以在不同的操作系统上运行,如Windows、Linux等。
5. 扩展性好:Matlab支持用户自定义函数和工具箱,可以根据需要扩展功能。
四、学习Matlab程序设计的方法学习Matlab程序设计可以采用以下几种方法:1. 官方文档:Matlab官方网站上提供了详细的教程和文档,可以帮助初学者快速入门。
2. 在线课程:有许多在线课程和教学视频可以帮助学习者系统地学习Matlab的使用。
matlab程序设计
matlab程序设计Matlab程序设计是一门应用数学和计算机科学的交叉学科,它使用Matlab软件来解决各种科学和工程问题。
Matlab是一种高级的、面向对象的编程语言,它的设计目标是让科学家和工程师能够更轻松地使用数值计算和数据可视化工具。
在Matlab程序设计中,我们可以使用各种算法和技术来解决复杂的问题。
例如,我们可以使用矩阵运算来处理线性代数问题,使用数值方法来解决微分方程,使用优化算法来求解最优化问题,使用图形绘制函数来可视化数据等等。
Matlab程序设计的基本框架通常包括以下几个步骤:问题定义、算法设计、编码实现、测试和调试、性能优化和结果分析。
首先,我们需要清楚地定义问题,明确要解决的任务和目标。
然后,我们可以选择合适的算法或技术来解决问题,并设计相应的计算流程。
接下来,我们使用Matlab编程语言将算法转化为可执行的代码,实现程序功能。
在编码实现过程中,我们需要注意程序的可读性和可维护性,使用恰当的变量命名和注释来提高代码的可理解性。
完成编码后,我们需要进行测试和调试,确保程序的正确性和稳定性。
在测试和调试过程中,我们可以使用Matlab提供的调试工具来逐步跟踪程序的执行过程,查找和修复错误。
当程序经过测试和调试后,我们可以进行性能优化,提高程序的运行效率和响应速度。
最后,我们对程序的输出结果进行分析和解释,得出结论并进行相应的改进。
Matlab程序设计的优势在于其丰富的函数库和强大的计算能力。
Matlab提供了大量的预定义函数和工具箱,包括数值计算、信号处理、图像处理、统计分析等领域的函数,这些函数可以大大简化程序的编写和调试过程。
此外,Matlab还支持用户自定义函数和脚本文件,使得程序的可扩展性和灵活性更强。
另外,Matlab还提供了丰富的图形绘制函数和工具,可以帮助用户直观地理解和展示数据。
在Matlab程序设计中,我们还可以利用面向对象的编程思想来设计和实现复杂的程序结构。
matlab教学-第5章 程序设计
5.5.1
循环计算
1.循环的向量化 2.循环的优化
5.5.2
M文件分析
MATLAB还向用户提高了一个方便地分析编写的代码 效率的工具,可以告诉用户代码各部分的执行效率,对于执 行效率慢得代码,用户可以考虑通过其他方法提高算法效率 。
5.6
本章小结
本章主要介绍了MATLAB程序设计的基本知识,通过 本章的学习,读者应该掌握MATLAB程序设计基本的语法 规则,尝试编写一些简单的程序文件,同时进一步完善程序 ,使其效率更高。
5.4
程序的错误处理
通过上述内容的学习,读者可以基本掌握程序编写的 流程,可以独立写出简单的程序。相对而言,程序的写作比 较容易,写完后程序是否能保质保量的完成指定的设计任务 才是关键。在本节中笔者将结合多年使用MATLAB的心得 体会,与读者探讨MATLAB常见的错误类型其程序的调试 方法。
5.4.1
5.3.3
暂停语句
pause命令用于暂停运行的程序,一般用于调试过程, 或者向用户显示程序的中间结果。
5.3.4
指令显示控制语句
一般的函数文件在执行中,代码不会显示,但是如果 需要查看运行了哪些代码,可以使用echo命令,用于控制 是否显示执行的代码,如果开启显示功能,程序执行的代码 将在命令窗口显示。
5.3.5
警告语句
当程序运行出错后,程序设计中需要提供警告语句用 于显示出错信息。MATLAB提供了可具有警告提示功能的 语句主要有warning语句、error语句、errordlg语句。
5.3.6
返回语句
return语句用于结束程序,可以强制退出某一运行的函 数,而break只能退出循环,continue语句只能退出当前的 循环,进入下一次循环。
MATLAB程序设计教程
MATLAB程序设计教程MATLAB程序设计教程本文档旨在向初学者介绍MATLAB程序设计的基础知识和技巧。
从安装MATLAB开始,到编写简单的程序和函数,再到更高级的数据处理和图形绘制技巧,我们会逐步深入讲解,以帮助读者掌握MATLAB编程的基本概念和技术。
第一章安装MATLAB- MATLAB的和安装步骤- 注册MATLAB账号- 软件环境需求第二章 MATLAB基础知识- MATLAB界面概览- 基本操作和快捷键- 变量和数据类型- 向量和矩阵运算- 控制流程语句第三章编写简单的程序- 编辑和运行脚本文件- 使用注释和帮助文档- 变量和运算符- 用户输入和输出- 错误处理第四章 MATLAB函数- 函数的定义和调用- 函数输入和输出- 匿名函数- 递归函数第五章数据处理和分析- 数据加载和保存- 矩阵操作和线性代数- 统计和概率分析- 插值与拟合- 数据可视化第六章图形绘制- 2D和3D绘图函数- 坐标轴设置和标签- 图例和颜色设置- 动态图形第七章高级技巧与应用- 调试和优化MATLAB代码- 编写自定义工具箱- 与其他编程语言的交互- 并行计算和分布式计算- MATLAB的工程应用本文档涉及附件:附件1、示例程序代码附件2、数据集样本本文所涉及的法律名词及注释:1.版权:指文学、艺术、音乐、电影、软件等创造性作品的独占权。
2.许可证:指授权他人使用自己拥有的知识产权的合法证明文件。
3.商标:指为区别同一种类商品和服务的商家而使用的标志、名称或字词等。
MATLAB程序设计
MATLAB程序设计
一、MATLAB程序设计概述
MATLAB(Matrix Laboratory)是一种高级的科学和数学计算软件,主要应用于数学计算、可视化和编程。
MATLAB的强大功能使它成为广泛应用于数学、物理、工程、金融、生物信息等领域的工具。
它还可用于设计、测试和部署可靠、可维护的应用程序。
MATLAB除了提供了大量的函数及命令,还支持用户自定义函数,因此,MATLAB程序设计就成为了MATLAB的重要组成部分。
MATLAB程序设计是一种编写代码来完成特定任务的过程。
它的代码可以与MATLAB内置的函数和命令一起使用,以执行任务,并将结果传递给MATLAB的后续任务。
MATLAB程序设计的代码也可以被称为“脚本”,它可以用于自定义函数,以实现特定任务,或者可以被组合在一起以构建更复杂的应用程序。
二、MATLAB程序设计的基础
要成功编写程序,必须充分理解MATLAB的基本组成部分,以及如何将它们结合在一起。
MATLAB程序设计的基本要素包括:变量、矩阵、函数、程序流程控制、调试等。
变量:变量是MATLAB的基本构造块,可以用来存储任何信息。
MATLAB中定义变量时,只需要指定变量的名称,以及它的类型(数字、字符串、逻辑等)。
矩阵:矩阵是MATLAB中的数据结构,是一种多维数据集合。
《Matlab程序设计》课程教学大纲
Matlab程序设计Matlab Program Design一、课程基本情况课程类别:专业任选课课程学分:2学分课程总学时:32学时,其中讲课:24学时,实验(含上机):8学时课程性质:选修开课学期:第4学期先修课程:计算机基础,高等数学,线形代数适用专业:电子科学与技术教材:MATLAB程序设计教程,中国水利水电出版社,刘卫国,2010,第2版开课单位:电子与信息工程学院电子科学与技术系二、课程性质、教学目标和任务MATLAB程序设计是电子与电气信息类相关专业的专业任选课程之一。
MATLAB是由MathWorks 公司1985 年推出的一种面向科学与工程的计算软件,它具有极强的数值计算、图形文字处理、数据分析、动态仿真、信号处理等功能,涉及了数值分析、自动控制、信号处理、图像处理等十几个领域的计算和图形显示,功能强大。
因此,将MATLAB引入教学,强化应用能力培养,学生在学习专业基础课程时,增加工程应用背景,在打好专业基础的同时,提高学生的应用、创新意识。
通过本课程的学习,使学生学习和掌握如何利用MATLAB对所学理论、原理和方法进行计算机仿真,通过仿真,加深对所学知识的理解和掌握,解决学习相关课程中遇到的抽象问题,为后续专业课程的学习奠定基础。
通过工程软件在电气类专业基础课程的应用,提高学生动手能力、分析问题与解决问题的能力,到达对学生的工程意识培养的目的。
三、教学内容和要求第1章MATLAB系统环境(2学时)(1 )了解MATLAB的影响及其开展历史和MATLAB 7.0的主要功能;(2)理解MATLAB 7.0的运行环境与安装过程,熟悉菜单栏、工具栏的使用;( 3)掌握命令窗口、历史记录窗口、当前目录窗口的使用方法;重点:命令窗口、历史记录窗口、当前目录窗口的使用方法;难点:MATLAB 7.0的辅助局部和MATLAB的数学函数库。
第2章MATLAB数据及其运算(2学时)(1 )了解元胞数组、结构与结构数组;( 2)理解一、二维数组的创立方法;( 3)掌握数值表示、变量表达式、矩阵的表示、字符串矩阵的算术运算、数组运算;重点:矩阵线性运算;创立数组、数组的算术运算;难点:数组运算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例1:已知求y的表达式,y=1/1+1/2^2+1/3^2+……+ 1/n^2当n=100时,求y的值。 程序如下: y=0;n=100; for i=1:n y=y+1/i/i; end y 在实际MATLAB编程中,为提高程序的执行速度,常用 向量运算来代替循环操作: n=100; i=1:n; f=1./i.^2; y=sum(f)
例 建立一个函数文件将变量a,b的值互换,然后 在命令窗口调用该函数文件。 首先建立函数文件fexch.m: function [a,b]=exch(a,b) c=a;a=b;b=c; 然后在MATLAB的命令窗口调用该函数文件: clear; x=1:10; y=[11,12,13,14;15,16,17,18]; [x,y]=fexch(x,y)
else
sj=rand(40,3) end
例3: 输入一个字符,若为大写字母,则输出其后继字符, 若为小写字母,则输出其前导字符,若为数字字符则输出 其对应的数值,若为其他字符则原样输出。 程序如下: c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+1)); elseif c>='a'& c<='z' disp(setstr(abs(c)-1)); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); end
4、switch语句 格式为: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 …… case 表达式m 语句组m otherwise 语句组m+1 end
例4:画出下列分段函数所表示的曲面。
0.54e 0.75 x 3.75 y 1.5 y x y 1 x 2 6 y 2 p( x, y) 0.7575 e 1 x y 1 0.5457e 0.75 x 2 3.75 y 2 1.5 y x y 1
if (条件1) 命令组1 else if (条件2) 命令组2 else 命令序列 end
例 2 删除数据中的无关数据:一般认为,误差大于3 倍标准差的数据项,就认为是无关项,因此可以从数据中 删除,为此可删除所找列的无关项
if exist('c:\matlabbk\sj.txt') load c:\matlabbk\sj.txt [i,j]=size(sj) mu=mean(sj) sigma=std(sj) outliers=abs(sj-ones(i,1)*mu)>3*ones(i,1)*sigma sj(outliers)=[]
6.2 数据的输入输出
1、 input函数 调用格式为: A=input(提示信息,选项); 其中:提示信息为一个字符串,用于提示用 户输入什么样的数据。 如果在input函数调用时采用's'选项,则允许 用户输入一个字符串。例如,想输入一个人的姓 名,可采用命令: xm=input('What''s your name?','s')
try语句(试探性执行语句) 语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在 执行过程中出现错误,则将错误信息赋给保留 的lasterr变量,并转去执行语句组2。这种试探 性执行语句是其他高级语言所没有的。
例5:矩阵乘法运算要求两矩阵的维数相容,否则 会出错。先求两矩阵的乘积,若出错,则自动 转去求两矩阵的点乘。 程序如下: A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因
数值积分 l quad(„F‟,A,B,TOL,TRACE)
其中: ‘F‟为函数名,A和B指定积分区间,TOL迭代 误差,TRACE,采用的递归的辛浦生方法。 l quad 8(„F‟,A,B,TOL,TRACE) 其中: ‘F‟为函数名,A和B指定积分区间,TOL迭代误 差,TRACE,采用的newton-cotes方法。
2、disp函数 调用格式为 disp(输出项) 其中输出项既可以为字符串,也可以为 矩阵。 注意:用disp函数显示矩阵时将不显示 矩阵的名字,而且其格式更紧密,且不 留任何没有意义的空行。
例 1 求一元二次方程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) )]);
l dblquad(„F‟,inmin,inmax, outnmin,outinmax) 其中: inmin 与 inmax , 分 别 为 内 层 积 分 的 上 下 限 , outnmin与outinmax,分别为外层积分的上下限
举例:定义函数 function y=ex542f(x) y=-x.*x+115
3、循环结构
(1) for t=e1:e2:e3 end
首先计算三个表达式的值,再将表达式1的值赋给循 环变量,如果此时循环变量的值介于表达式1和表达式3 的值之间,则执行循环体语句,否则结束循环的执行。 执行完一次循环之后,循环变量自增一个表达式2的值, 然后再判断循环变量的值是否介于表达式1和表达式3之 间,如果满足仍然执行循环体,直至不满足为止。这时 将结束for语句的执行,而继续执行for语句后面的语句。
(3) 运行
在命令窗口直接键入 文件名.m
(4) 注意
(1)命令文件中的语句可以访问MATLAB工作区(workspace)
中的所有变量。运行过程中所有产生的变量均是全局变 量。
(2)“%”开始的行为注释行,不予执行。 (3)若将文件未存放在系统的搜索目录下时,运用该文件 之前,应先进入该目录。 (如cd d:\mywok)
2 2
[X,Y]=meshgrid(-3:0.1:3);
T=X+Y; if T>1 Z=0.54*exp(-0.75*X.^2-3.75*Y.^2-1.5*Y); elseif T>-1 and T<=1 Z=0.7575*exp(-X.^2-6*Y.^2); else Z=0.5457*exp(-0.75*X.^2-3.75*Y.^2+1.5*Y); end surf(X,Y,Z) %plot3(X,Y,Z) %mesh(X,Y,Z)
调用函数: s=quad(„ex542f‟,0,10)
例 建立一个命令文件将变量a,b的值互换,然后运 行该命令文件。 首先建立命令文件并以文件名exch.m存盘: clear; a=1:10; b=[11,12,13,14;15,16,17,18]; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中输入exch,将会执 行该命令文件。
l 函数的零点 fzero(„F‟,猜测值) 得到零点的区间 l 多变量函数的局部极小值点 fmins(„函数名’,初始极值向量,options) 得到向量附近的一个极小值
举例:定义函数 function b=two_var(v) x=v(1);y=v(2) b=x.^2+y.^2-x.^2*y.^2 给定初始值:v=[-0.7 –1.2] 调用函数: a=fmins(„two_var‟,v) options与单变量时相同
函数的极小值点和零值点
l 单变量函数的局部极小值点 fmin(„F‟,x1,x2,options) F函数名,x1 ,x2指定极小值区间,options第一个分 量为 正时,则显示函数的运行步骤。 Options(1)决定是否在屏幕上显示最小值的迭代过程, 非0时,显示,为0时不显示,默认为0 Options(2)迭代时自变量的误差控程限,默认为1.0e-04 Options(3)为迭代时函数值的误差控程限,函数fmins使 用该参数 Options(4)为迭代时最大的迭代次数,函数fmin默认值 为500,fmins为200步 。
6.3 M文件的程序结构
1、 顺序结构 2、 分支结构
(1)if end (条件) 当条件成立时,则执行语句组,执行 完之后继续执行if语句的后继语句, (命令组) 若条件不成立,令组1) else (命令2) end
2、分支结构 (3) if else if 结构
(5) 举例:画出函数图形
脚本m文件的内容:y=1./(1+exp(-x)),
保存文件名jb1.m
在工作窗口下定义:x=0:1/20:20 运行脚本文件(jb1)得到函数值y
命令窗口下,用plot(x,y)画出对应的图 形
3、函数文件
(1)建立 用记事本(Notebook)编写程序 在MATLAB系统下选择:“file”→“new”→“m-file” (2) 函数文件的格式 Function 输出参数=函数名(输入参数表) 函数体 (3)函数体的内容 函数定义行 Hi行:帮助信息的第一行,用于提示函数的功能,当 用命令 Lookfor查询该函数的帮助信息时将显示该行内 容。 帮助体 函数体
(5)应用举例
函数表示 函数m文件的内容为: function y=foft(x) y=1./(1+exp(-x)) 文件名为:foft fplot('foft',[0 20],1e-04) 数学函数曲线的绘图 fplot(fun,lims) 其 中 : fun 表 示 函 数 名 , 定 义 函 数 的 M 文 件 名 lims=[XMIN XMAX YMIN YMAX]