目标:
- 学会写matlab脚本。
- 编写结构化程序。
- 编写用户自定义函数。
一、编写matlab脚本
MATLAB Script:
- 一个文件包含一系列matlab命令
- 类似于c/c++程序
- 脚本保存为<file>.m文件,这样就可以运行这样以.m结尾的matlab脚本
使用技巧:
下面是一个matlab脚本程序,可以运行一下,看看效果
- 注释:% 注释文字
- 分区块:%% 一个区块,使用运行的时候会运行整个文件,使用运行节会只运行当前区块。
- 断点调试:在程序代码行前面点击会出现一个圆圈表示断点,当运行程序时,程序会停在此处。
- 代码缩进排版:ctrl + I
- 执行顺序:代码是从上到下执行的
for i = 1:10
x = linspace(0,10,101);
plot(x, sin(x+i));
print(gcf,'-deps',strcat('plot',num2str(i),'-.ps'));
end
二、程序结构化
Flow Control:
matlab中有如下的控制语句
在控制语句中,还要配合一些逻辑操作,下面是相关的逻辑操作。
if elseif else语句:
% 语句格式
if condition1
statement1
elseif condition2
statement2
else
statement3
end
% 程序
a = 3;
if rem(a, 2) == 0 % rem()函数是求余数
disp('a is even')
else
disp('a is odd')
end
结构化程序的作用就是控制程序的执行顺序,不会像之前说到的完全按从上到下的顺序执行,会跳过某条语句执行。
switch语句:
% 语句格式
switch expression
case value1
statement1
case value2
statement2
.
.
otherwise
statement
end
% 程序
input_num = 1;
switch input_num
case -1
disp('negative 1');
case 0
disp('zero');
case 1
disp('positive 1');
otherwise
disp('other value');
end
while语句:
% 语句格式
while expression
statement
end
% 程序
n = 1;
while prod(1:n) < 1e100 % 1-n的元素相乘
n = n + 1;
end
for语句:
% 语句格式
for variable=start:increment:ends
commands
end
% 程序
for n=1:10
a(n) = 2^n;
end
disp(a)
预先定义变量空间:提升效率.
A = zeros(2000, 2000);在往这个矩阵中添加值。右边的更快。
break语句; 用在循环语句中,用来终止循环。
结构化程序的技巧:
- 编写脚本程序代码之前,可以使用
- clear all; 清除之前使用过的变量
- close all; 关闭所有的figure
- 使用“;”在命令行的结尾,不让命令执行
- 使用“...”将代码换行输入。使代码不过于全部在一行
- ctrl + C:提前截至运行的程序
三、用户自定义函数
Built-in Functions:
matlab的自己函数,是已经定义好的函数,可以直接调用去使用。
edit(which('mean.m')):打开自建函数mean.m文件
-
关键字:function
-
函数名和文件名要相匹配
-
目录:matlab需要找到这个函数
-
输入和输出变量是可选的
-
本地变量:dim和flag不是被接受的
User Define Functions:
我们自己定义函数,完成我们所需要的功能。
% 自由落体函数
function y = freebody(x0, v0, t)
x = x0 + v0 .* t + 1/2*9.8*t.*t;
调用函数:freebody(0,0,10)
注意:.* 是元素之间也可以相乘
函数具有多个输入和输出: