Matlab---从入门到精通 Chapter 4 编程基础
---恢复内容开始---
4-1 M文件编辑器
- 在命令窗口输入edit命令,可以打开M文件编辑器,创建新的M文件
- 在命令行中输入edit filename,那么可以打开在当前目录环境下的M文件
4-2 M文件编辑器的设置
- 在M文件编辑器中选择File-Preference菜单项
4-3 M脚本文件的编写
- 创建脚本文件,由一系列按照用户要求执行的命令构成,称为M文件,.m后缀
- 文件的变量驻留在工作空间内,从工作空间可以查询到脚本文件执行中的变量信息,还可以用whos查询,不使用时需要用clear命令进行清除
- 脚本文件的执行:run命令或者F5
- 一些控制函数:
- disp:只显示结果,不显示变量名
- echo:脚本文件执行过程中,执行脚本文件内容是否显示在命令窗口
- input:提示用户输入数据
4-4 流程控制
- for循环结构
一般格式:
for x=array %array为条件数组,任何合法的数组生成语句都可以
commands %循环代码
end
注:等效数组的执行效率比for循环快几个数量级。等效数组的解决办法也叫向量化的解决方案;数组的为标量化解决方案。
- while循环结构
一般格式:
while expression %条件表达式,标量或者数组表达式;为数组时,只有数组中的所有元素均为true时,循环体内的commands才会一直执行下去。
commands
end
注:当expression为数组时,可以使用any函数作为while循环的条件判断式
- if判断结构
if expression
commands
end
注意:
当expression 为(expression 1|expression 2)时,那么当计算的expression1为false时,expression2才执行
当用户需要在判断条件为true和false时,分别执行不同的命令,那么可以选择使用if-else 判断结构:
if expression
commands when expression is true
else
commands when expression is false
end
当用户需要执行多个操作语句时,可以使用elseif语句结构。
- switch分支选择结构
结构格式:
switch expression
case test_expression1
commands1
case test_expression2
commands2
otherwise
commands3
end
- try-catch结构
try
commands1 %都被执行
catch
commands2 %有错误,执行commands2
end %无错误,跳到此处
用户也可以在catch模块中,使用rethrow函数来将实际的字符串显示出来,并结束程序。
4-4 控制命令
常见的控制语句包括input、continue、break、return、echo等
continue命令:结束本次循环,直接放到循环控制体内
break命令:跳出break所在的循环体,如果有多个循环语句嵌套时,break只能跳出所在的那个循环,而不跳出整个循环结构。
return命令:将函数的控制权转回到主调函数或者指定的窗口
keyboard命令:将该命令放到M文件中,当程序执行到该命令时,将停止程序的执行,而将命令控制权交给keyboard;当用户完成命令的执行后,按return返回
error和warning命令:error 终止,warning继续执行。
4-5 程序的向量化概念
逻辑数组和向量化
- 逻辑数据可以通过关系和逻辑表达式来创建
- 也可以通过logical命令来创建逻辑数组
- 对于逻辑数组的联系也可以通过whos命令来查看
4-6 M函数文件
在Matlab中允许用户创建3种类型的函数:M函数、匿名函数和内联函数,本节主要介绍M函数文件。
- 函数文件的创建
- M函数文件的第一行必须是function引导的声明语句,如:function y=sinex(x)
- 在函数声明行和第一行命令之间可以放入若干注释行
- 在M函数文件中也可以调用M脚本文件
- 在M函数文件中也可以创建一个或者多个子函数,即局部函数;子函数只能被M函数问你内的主函数调用
- 输入输出参数
- n=nargin 获取实际输入函数体的输入参数个数
- n=nargin(‘fun’) 获取指定函数fun的输入参数个数
- n=nargout 获取实际输入函数体的输出参数个数
- n=nargout(‘fun’) 获取指定函数fun的输出参数个数
- 在函数声明过程中,如果将varargin和varargout作为输入参数列表和输出参数列表的最后一个参数,那么在函数调用时,函数就可以接受任意个数的输入参数,也可以输出任意个数的输出参数。P138
- 函数句柄和匿名函数
用户需要将一个函数的标示作为参数传递给另一个函数,Matlab提供了内联函数(inline function)和匿名函数(anonymous function)
- 匿名函数:
- 内联函数:可以通过字符串表达式来创建函数
4-7 程序的调试和剖析
程序调试常见的错误:语法错误和运行错误
直接调试方法:
- 将被调试语句的分号去掉,使计算的中间结果在命令窗口显示出来
- 在疑似问题出添加多余语句,来显示要查看的变量
- 灵活使用keyboard命令参与程序调试
- 将函数文件变成脚本文件来查询,即将函数文件的第一行用%加以注释,这样函数文件运行中的变量数值就可以在工作空间进行显示
---恢复内容结束---
Matlab---从入门到精通 Chapter 4 编程基础的更多相关文章
- Java入门——(1)Java编程基础
Java入门--(1)Java编程基础 第二章 Java编程基础 JAVA 代码的基本格式: 修饰符 class 类名{ 程序代码 } 2.1关键字:赋予了特殊含义的单词. 2.2标识符: ...
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
- Matlab 编程入门(一):编程基础
上学期学了一些matlab的知识,这学期再用时竟然发现已经忘得差不多了(┬_┬) 于是决定重新开始并将它们记录下来,也方便自己以后查漏补缺! M文件编程 脚本文件 matlab有自己的命令行窗口,对于 ...
- 【MySQL】从入门到精通8-SQL数据库编程
上期:[MySQL]从入门到精通7-设计多对多数据库 第零章:Mac用户看这里: mac终端写MySQL和windows基本相同,除了配置环境变量和启动有些许不同以外. 先配置环境变量,在终端输入vi ...
- web入门之十 JS高级编程基础
学习内容 JavaScript函数 JavaScript类和对象 解析JSON数据 能力目标 深入了解JavaScript函数 熟悉JavaScript面向对象编程 熟练进行JSON数据解析 本章简介 ...
- Matlab 从入门到精通 Chapter11 文件读取I/O
11.1 工作空间数据读取 将工作空间的变量保存为文件,可以使用save命令. save('filename') 将文件保存在当前目录下,文件名为filename.mat save('filenam ...
- 《Matlab实用案例》系列Matlab从入门到精通实用100例案例教程目录(持续更新)
目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之<Matlab使用案例> 3. 专栏目录 [MATLAB统计分析与应用1 ...
- [SharePoint][SharePoint 2013从入门到精通]Chapter 1 介绍 SharePoint2013
本章你讲学到 什么是SharePoint2013 SharePoint2013如何加强协作与共享 SharePoint2013中有什么用户权限 什么是SharePoint Online 本地部署与在线 ...
- Matlab从入门到精通 Chapter5 数据可视化--
5-1 图形绘制示例 >> x2=-17:0.02:3; >> y2=1./((x2+3).^2+1)+1./((x2+9).^2+4)+5; >> subplot ...
随机推荐
- 关于getElementsByTagName的遍历顺序
关于getElementsByTagName的遍历顺序是怎么样的呢? getElementsByTagName的遍历顺序是从HTML的页面从上到下遍历还是按照标签的嵌套顺序层层遍历的呢? 来做个小小的 ...
- 移动端 AnyProxy HTTPS 配置
参考:AnyProxy HTTPS相关教程 参考教程中,说明了 Windows 和 Mac 系统的配置,这里补充一下移动端(Android.iOS)的配置 生成RootCA > 下载 rootC ...
- ZBrush中平滑笔刷介绍
平滑笔刷在ZBrush®中的使用颇多,它可以在ZBrush®模型的多层细分下工作,并且能够控制对模型的平滑效果,而且还能将模型的细节完整保留.默认情况下,按住Shift键就会切换到平滑笔刷,根据调整不 ...
- Day 02 - 01 计算机的操作系统
操作系统 场景:有以下三个人 1.庄园主 -->相当于人类 2.管家 --> 把人类要传达的信息分配给奴隶,相当于操作系统 3.奴隶 -->为人类干活的机器 1.操作系统做了什么? ...
- 《Exception》第八次团队作业:Alpha冲刺(第四天)
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...
- PAT 天梯赛练习集 L2-022. 重排链表
题目链接:https://www.patest.cn/contests/gplt/L2-022 给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L ...
- 使用面向对象技术创建高级 Web 应用程序
作者: 出处: 使用面向对象技术创建高级 Web 应用程序 来源:开源中国社区 作者:oschina 最近,我面试了一位具有5年Web应用开发经验的软件开发人员.她有4年半的JavaScript编程经 ...
- vue无缝滚动的插件开发填坑分享
写插件的初衷 1.项目经常需要无缝滚动效果,当时写jq的时候用用msClass这个老插件,相对不上很好用. 2.后来转向vue在vue-awesome没有找到好的无缝滚动插件,除了配置swiper可以 ...
- 小学生都能学会的python(列表[ ])
小学生都能学会的python(列表[ ]) 1. 什么是列表(list) 能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的 列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开 ...
- js获得 json对象的个数(长度)
function getJsonObjLength(jsonObj) { var Length = 0; for (var item in jsonObj) { Length++; } return ...