教学内容:
• Script writing(撰写matlab程序语言)
• Structured programming(结构化编程)
• User-defined function(自定义函数)
MATLAB Script
写的程序要被保存在(.m)文件中。
Start A Script (.m) File
创建一个文件,点击
中文版:新建脚本
文件名不能以数字开头,区分大小写。
Script Editor(编辑器)
在编辑器里写,可以将代码保存在文件中,在命令行窗口写不会保存。所以以后可以在新建一个Script里写代码。
输入范例,运行:
如何使用function函数:
点击fx图标,里面有所有的你想要用的函数。
注解符号:%
1.自己打%符号;
2.
3.选择要注释的语句,右键点击,选择注释即可。
两个(%%)符号:
将整个Script代码文件,分成好几个Section部分。
这要做就可以只执行一部分代码,有利于Debug
点击Run Section(运行节) 只运行部分代码。
点击Run(运行),运行整个文件。
Debug:
点击最左边一列的横线,就会出现Debug Knot断点
程序执行到这就会停止,可以检查上述运行的具体过程。
命令行窗口的">>“变成"K>>”。
代码智能缩进Smart Indent:
ctrl+I
Script Flow
代码执行顺序:每一行从上到下。
结构化程序设计Structured programming:
使用一些循环等使程序看起来更加简洁。
一些指令
if,elseif,else | 如果条件为true,则执行语句 |
for | 执行指定次数的语句 |
switch,case,otherwise | 执行几组语句中的一组 |
try,catch | 执行语句并捕获结果错误 |
while | 在条件为真时重复执行语句 |
break | 终止for或while循环的执行 |
continue | 将控制传递到for或while循环的下一次迭代 |
end | 终止代码块,或指示最后一个数组索引 |
pause | 暂缓执行 |
return | 将控制返回到调用函数 |
Relational (Logical) Operators
逻辑运算符
Operator | Meaning |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
~= | 不等于 |
&& | 与(和) |
|| | 或 |
a>10:两个结果:1—>正确;0—>错误
if elseif else
if condition1
statement1
elseif condition2
statement2
else
statement3
end
注意:以end结束
elseif和else可写可不写。
举例:判断余数是奇数还是偶数。
function求余数:rem(a,b)
remainder余数
switch
switch expression
case value1
statement1
case value2
statement2
.
.
otherwise
statement
end
注意:以end结尾
例子:
while
while expression
statement
end
注意:以end结尾
例子:
B = prod(A) 返回 A 的数组元素的乘积
A=1:n
A=[1 2 3…n]
prod(A)=n!
n!<1*10100
练习:
使用while计算1+2+3+…999
for
for variable=start : increment : end
commands
end
注意:以end结束
increment 增量
例子:
n=1,a(1)=21
n=2,a(2)=22
n=3,a(3)=23
…
注意:如果想要改变a数组里面的元素,首先要先clear a,才行。
否则,就算改变了代码,输出的还是上面的元素。
题目:
输出21,23,25,27,29
Pre-allocating Space to Variables
给变量提前分配好空间比边运算边分配空间所花的时间更短。
举例:
比较程序A和程序B所用的时间
程序A没有提前分配空间,程序B有提前配空间。
如何计算程序所花的时间?
tic 计时开始
…
toc 计时结束
可见A比B慢,即未提前分配空间更慢。
题目:
把数组A复制到数组B中,把数组B中的复数元素改为0。
break
终止for或while循环的执行
Tips for Script Writing
写程序的一些小技巧:
在写程序之前,先输入命令:
clear all:清空所有的变量(如果不清除,变量还是以前的值)
close all:把图形全部关掉
clc:清空命令行窗口
使用分号;不输出一些语句
如果一条语句太长,使用"…",再按回车,将一条语句变成两行,代表这两行代码是一条语句;直接换行会显示错误。
A = [1 2 3 4 5 6; …
6 5 4 3 2 1];
如果程序出现宕机,例如一直运行,使用ctrl+c暂停程序运行。
Scripts vs. Functions
Scripts和Functions是不同的,Functions是已经写好的函数(代码),可以直接调用。
如何自定义Functions函数?
首先观察Matlab自带的Functions是怎么写的:
以mean为例:
mean—>求平均值
如何看到mean的底层代码?
输出指令:>> edit(which(‘mean.m’))
一个Function具备:
Keyword: function
Output Argument(s):输出
Function Name (same as file name .m):函数名(方法名),与文件名一致。
Input Argument(s):输入
Online Help:注解
MATLAB Code:源码
不一定需要输入或输出。
User Define Functions
自定义function:
例1:计算自由落体的位移。
给出初速度,初位移,下落的时间,计算下落的位移。
注意:使用的是“点乘”,这样如果给出的初速度,初位移,和时间都是一个数组的话,就能一次算出多个结果;如果是叉乘就算不出来。
例2:计算加速度和合外力
注意:这里要输出两个,用[ ],得到这两个值也要用[ ]接收。
题目:
将华氏摄氏度转换为摄氏度。
只要调用函数,就会一直显示输出,不输入任何东西直接回车则程序结束。
注意:
s = num2str(A) 将数值数组转换为表示数字的字符数组。
name = ‘Alice’;
age = 12;
X = [name,’ will be ‘,num2str(age),’ this year.’];
disp(X)
x = input(prompt) 显示 prompt 中的文本并等待用户输入值后按 Return 键。
str = input(prompt,‘s’) 返回输入的文本,而不会将输入作为表达式来计算。
Function Default Variables
函数默认变量
inputname | 函数输入的变量名称 |
mfilename | 当前正在运行的代码的文件名 |
nargin | 函数输入参数数目 |
nargout | 函数输出参数数目 |
varargin | 可变长度输入参数列表 |
varargout | 可变长度的输出参数列表 |
Function Handles
函数句柄 = @(输入变量) 输出变量
更接近数学上的定义函数,f(x)=exp(-2*x)
f = @(x) exp(-2*x);
x = 0:0.1:2;
plot(x, f(x));