Matlab高级教程_第一篇:Matlab基础知识提炼_03
第七节:函数
编程的过程很像是画图纸,编程语言在平时使用的时候不会像是单个的命令去执行,大多数情况下我们把许多重复要执行或者一些常用的编辑好的功能“封装”到一起,方便来使用。函数-----就是这种过程。函数也就是最基本的“画图纸”的方式。
7.1 函数的关键字
关键字就好像是这些筋骨的节点,起到起承转合的作用。共20个左右(可能后续会有增加),这些关键字在变量声明等地方不能重名使用,他们是唯一的。
在命令窗口输入iskeyword命令就会显示出这些关键字。关于并行技巧后面会说到。
7.2 MATLAB的控制流
像if,for,while等这类语句叫做控制流。MATALAB包括6中算法,其中switch-case这种类型比较特殊点儿,跟if非常类似。
六种:顺序结构、if-else-end分支结构、switch-case结构、try-catch结构、for循环结构和while循环结构。跟其他语言一样来这里列出只不过稍微比较一下和其他语言的书写结构哪里有些不同。
7.2.1 顺序结构
这部分略,就是语句时按照从上而下、从左至右的运行方式。
7.2.2 if-else-end分支结构
if后面打不打括号一样。写一个完整版本的例子
x = input('enter''x'':');
if(x>0)
y = 1;
elseif (x ==0)
y = 0;
else
y = -1;
end
disp(y)
注意每一个语句结束要用分号,这是MATALB的规定。
7.2.3 switch-case 语句
switch后面跟要进行判断的标量或者字符串,举一个完整例子如下。
num = 8;
switch num
case 1
data = 'Monday';
case 2
data = 'Tuesday';
case 3
data = 'Wednesday';
case 4
data = 'Thursday';
case 5
data = 'Friday';
case 6
data = 'Saturday';
case 7
data = 'Sunday';
otherwise
data = 'Please input right num!';
end
disp(data)
注意: 这里的switch语句后面要加上 otherwise这一条,如果不加判断体内判断都为0,会返回一个报错。
7.2.4 try-catch语句
try-catch语句属于找错语句,如果命令在try内错误,会执行catch内的语句。一个简单的例子:
clear;
num = 100;
try
if ischar(num)
disp('num is a string');
end
catch
disp('num is num');
end
lasterror;
% lasterr;
注意:后面一般跟一个错误提示信息
7.2.5 for循环结构
简单的例子:
for i = 1:4
for j = 1:4
if i > (5-j)
else
Mat(i,j) = i + j -1;
end
end
end
7.2.6 while 循环
简单的例子:
a(1) = 1;
a(2) = 1;
i = 2;
while a(i) < 10000
a(i+1) = a(i) + a(i-1);
i = i +1;
end
注意:while循环别忘了计数器。避免造成死循环。
7.3 控制程序流的其他常用命令和语句的嵌套。
嵌套就不用说了。
7.3.1 input和keyboard指令
输入指令,不多说了。
keyboard与input不同之处在于:keyboard指令运行输入多个MATLAB指令,而input指令只允许用户输入赋值给变量的“值”,即数组、字符串或者元胞、数组等。
yesinput指令。只能输入的指令它提供的输入值是一个默认量,并可以对输入范围进场检测,具体语法格式如下:
Value = yesinput('Prompt', Default, Possib);
(1) 这个指令设计用户和MATLAB之间的交互,因此无法再notebook程序中执行。
(2) Prompt为文字提示,Default为默认的设置值,Possib为可选值。
(3) 当yesinput指令运行后,如果用户不输入任何值,则变量Value将接受默认值。
备注:用的最多的就是input
7.3.2 pause 指令
暂停指令,注意括号内的是秒
7.3.3 continue ,break不说了
7.3.4 error和warning指令
总结如下:
7.4 脚本和函数的区分
与脚步文件不同的是,MATLAB中,函数文件Function文件类似于一个黑匣子,从外部无法看清其内部运算流程。其实我们每天写的叫脚本,而函数只不过是一种封装好的脚步运行过程看不见。
7.5 一般函数的结构
7.5.1 写完的函数要保存,这是句废话。另外,你保存的是函数的话会有一个fx的图表,如果保存的是脚本的话,有个MATALB的图像标志,文件名都.m文件,所以在很多教材中这部分叫M文件的编写
7.5.2 函数参数的指令集
在很多语言中,比如python分为5类,注入可变长度参数,表达式参数,默认参数等等。
这里有5类
分别为:
一般在函数体内
varargin{1} 表示输入的第二个参数是
如果function a = abc (varargin)
if nargin == 1 表示输入的参数为一个的话,等等一次类推
7.5.3 匿名函数、子函数、私有函数和私有目录
所谓匿名函数就是不用写函数又function有啥的,直接比较简单的函数实现。
子函数、私有这个不讲了
7.5.4 eval feval 和inline(内联函数)
7.6 跨空间变量传递和赋值
evalin('工作区', 'expression');该指令的工能为跨空间计算字符串表达式的值
assignin跨空间函数的调用
Matlab高级教程_第一篇:Matlab基础知识提炼_03的更多相关文章
- Matlab高级教程_第一篇:Matlab基础知识提炼_01
第一篇:Matlab基础知识提炼: 这一篇主要用系统和提炼性的语言对Matlab基础知识进行总结,主要适用于有语言基础的学习者.尽量不讲废话. 第一部分:Matlab是什么? 1 Matlab是Mat ...
- Matlab高级教程_第一篇:Matlab基础知识提炼_02
第三节:变量 正如其他编程软件一样. 都是通过变量来传递和交换数据的,这是基础.按照<MATLAB基础知识提炼>这篇文章先介绍变量比较合适.编程语言不外乎包括两部分:数据和结构.应该先把数 ...
- Matlab高级教程_第一篇:Matlab基础知识提炼_04
第八节:几大MATLAB的数据类型 8.1 数值型 8.2 字符和字符串 创建用' ' 8.3 函数句柄 8.4 结构体 创建用. 语法:struct('field', var1,'field2',' ...
- Matlab高级教程_第一篇:Matlab基础知识提炼_06
第十一节:图形操作 第十二节:文件的IO操作个格式化输出
- Matlab高级教程_第一篇:Matlab基础知识提炼_05
第九节:矩阵的操作 第十节:数组与矩阵 linspace函数
- Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换
1.相关方法已经生产引用,直接调用的结果如下: 2. 相关调用代码如下: using System; using System.Collections.Generic; using System.Li ...
- Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)
1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2
1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1
1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...
随机推荐
- 通过Navicat Premium 实现Oracle的连接和基本操作
一.Oracle的连接 以下为Navicat Premium连接Oracle数据库的教程 一.需要准备的软件(下载适合自己系统的软件) 1.Navicat premium 官方下载地址:http:// ...
- cf 621E. Wet Shark and Blocks
神奇,矩阵乘法23333333333333333 递推式是很简单的(连我这种不会DP的人都写出来了.) 需要求出的是转移矩阵(还是叫系数矩阵的),也是最这个东西用快速幂. 这个东西的i,j大概就表示从 ...
- C语言:大数求和
点击获取题目 1410: [蓝桥杯]高精度加法 时间限制: 1 Sec 内存限制: 256 MB提交: 28 解决: 20[状态] [提交] [命题人:外部导入] 题目描述 输入两个整数a和b,输 ...
- 爬虫(十八):Scrapy框架(五) Scrapy通用爬虫
1. Scrapy通用爬虫 通过Scrapy,我们可以轻松地完成一个站点爬虫的编写.但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个Spider则可能包含很多重复代码. 如果我们将各个站点的 ...
- Python pip换源
前言 哈喽呀,小伙伴们,晚上好呀,今天要给大家带来点什么呐,我们就来说说python的pip换源吧,这个换源,相对来说,还是比较重要的,能少生好几次气的,哈哈哈 为什么要换源 我们搞python的,肯 ...
- 如何搞定Critical Thinking写作?
受中国传统教育模式与国外一流大学之间的差异的影响,在海外留学的学子们常常会在新的学习生活中面临许多难题,Critical Thinking就是其中之一.国内的教育方法常常以灌输式的教育模式为主,忽略了 ...
- 尝试用kotlin做一个app(一)
1.先添加一下anko库 依赖:implementation "org.jetbrains.anko:anko:$anko_version" 版本:ext.anko_version ...
- 单变量线性回归(Linear Regression with One Variable)与代价函数
所谓的单变量线性回归问题就是监督学习的一部分. 通过构建数学模型给出一个相对准确的数值,也就是预测模型,通过将数据通过数学模型,衍生至回归问题 通过以下的几个例子,我们来研究单变量线性回归. 1.王阿 ...
- JavaSE--Arrays.copyof
背景: 想偷懒一次数组赋值下面多个例子复制下数组就好了.. 以为 Arrays.copyof(Arrays.copyof内部调用的是 System.copy, 所以同 Arrays.copy)拷贝出来 ...
- OpenCV2基础操作----直线、矩形、圆、椭圆函数的使用
opencv2几个画图函数的调用 要用到几个随机变量: int fr = rand()%frame.rows; int fc = rand()%frame.cols; int b = rand()%2 ...