目录
一、MATLAB基本语法
执行MATLAB命令
MATLAB实践
MATLAB常用的运算符和特殊字符
MATLAB常用的运算符使用示例
MATLAB特殊变量和常量
MATLAB命名变量
保存你的工作进度
二、MATLAB变量
MATLAB可以多个赋值
MATLAB如何显示已经使用的变量名?
长任务
MATLAB格式命令
MATLAB创建向量
MATLAB创建矩阵
三、MATLAB命令
MATLAB管理会话的命令
MATLAB的系统命令
MATLAB输入和输出命令
MATLAB向量,矩阵和阵列命令
MATLAB绘图命令
四、MATLAB M-Files
MATLAB的 M 文件
MATLAB创建并运行脚本文件
例子
点乘运算
,
常与其他运算符
点乘运算,常与其他运算符联合使用(如.\)
矩阵生成 矩阵生成 向量生成或子阵提取本节将会介绍一些MATLAB的基本语法的使用。
在 MATLAB 环境下进行的操作就像是使用一个超级复杂的计算器,不要被这吓到了。在您开始使用 MATLAB 时可以在“>>”命令提示符下输入命令。
MATLAB 是一种解释型的环境。也就是说,只要你给MATLAB一个命令,它就会马上开始执行。
在">>" 命令提示符下键入一个有效的表达,例如:
5 + 5
然后按 ENTER 键
当点击“执行”按钮,或者按“Ctrl+ E”,MATLAB执行它并返回结果:
ans = 10
让我们使用几个例子:
3 ^ 2 % 3 raised to the power of 2
当你点击“执行”按钮,或者按“Ctrl+ E”,MATLAB执行它并返回结果:
ans = 9
另外一个例子:
sin(pi /2) % sine of angle 90o
当你点击“执行”按钮,或者按“Ctrl+ E”,MATLAB执行它并返回结果:
ans = 1
另外一个例子,
7/0 % Divide by zero
当点击“执行”按钮,或者按“Ctrl+ E”,MATLAB执行它并返回结果:
ans = Inf
warning: division by zero
另外一个例子,
732 * 20.3
当点击“执行”按钮,或者按“Ctrl+ E”,MATLAB执行它并返回结果:
ans = 1.4860e+04
MATLAB 提供了一些特殊的一些数学符号的表达,像圆周率 π, Inf for ∞, i (and j) for √-1 etc. Nan 代表“不是一个数字”。
MATLAB常用的运算符和特殊字符如下表所示:
运算符 | 目的 |
---|---|
+ | 加;加法运算符 |
- | 减;减法运算符 |
* | 标量和矩阵乘法运算符 |
.* | 数组乘法运算符 |
^ | 标量和矩阵求幂运算符 |
.^ | 数组求幂运算符 |
\ | 矩阵左除 |
/ | 矩阵右除 |
.\ | 阵列左除 |
./ | 阵列右除 |
: | 向量生成;子阵提取 |
( ) | 下标运算;参数定义 |
[ ] | 矩阵生成 |
. | 点乘运算,常与其他运算符联合使用 |
… | 续行标志;行连续运算符 |
, | 分行符(该行结果不显示) |
; | 语句结束;分行符(该行结果显示) |
% | 注释标志 |
_ | 引用符号和转置运算符 |
._ | 非共轭转置运算符 |
= | 赋值运算符 |
MATLAB分号(;)使用
MATLAB中分号(;)表示语句结束;但是,如果想抑制和隐藏 MATLAB 输出表达,表达后添加一个分号。
例如,
x = 3;
y = x + 5
当点击“执行”按钮,或者按“Ctrl+ E”,MATLAB执行它立即返回的结果是:
y = 8
MATLAB添加注释
MATLAB的百分比符号(%)是用于表示一个注释行。例如:
x = 9 % assign the value 9 to x
也可以写注释,使用一块块注释操作符%{%}。
MATLAB编辑器包括工具和上下文菜单项,来帮助添加,删除或更改注释的格式。
MATLAB支持以下特殊变量和常量:
Name | Meaning |
---|---|
ans | 默认的变量名,以应答最近依次操作运算结果 |
eps | 浮点数的相对误差 |
i,j | 虚数单位,定义为 i2 = j2 = -1 |
Inf | 代表无穷大 |
NaN | 代表不定值(不是数字) |
pi | 圆周率 |
变量名称是由一个字母后由任意数量的字母,数字或下划线。
注意MATLAB中是区分大小写的。
变量名可以是任意长度,但是,MATLAB使用只有前N个字符,其中N是由函数namelengthmax。
MATLAB使用save命令保存工作区中的所有变量,然后作为一个扩展名为.mat的文件,在当前目录中。
如以下例子:
save myfile
该文件可以随时重新加载,然后使用load命令。
load myfile
每个MATLAB变量可以是数组或者矩阵。
用一个简单的方法指定变量。例如:
x = 3 % defining x and initializing it with a value
MATLAB执行上述语句,并返回以下结果:
x =
3
上述的例子创建了一个1-1的矩阵名为x和的值存储在其元素中。我们可以看看另外的例子,
x = sqrt(16) % defining x and initializing it with an expression
MATLAB执行上述语句,并返回以下结果:
x =
4
MATLAB注意事项:
例如:
x = 7 * 8;
y = x * 7.89
MATLAB将执行上面的语句,并返回以下结果:
y =
441.8400
例如:
sqrt(78)
MATLAB将执行上面的语句,并返回以下结果:
ans =
8.8318
变量 ans 可以被继续使用:
9876/ans
MATLAB将执行上面的语句,并返回以下结果:
ans =
1.1182e+03
在使用变量之前,必须进行赋值。
当系统接收到一个变量之后,这个变量可以被引用。
当表达式返回一个结果,不分配给任何变量,系统分配给一个变量命名ans,以后可以继续使用。
多个任务可以在同一行。例如,
a = 2; b = 7; c = a * b
MATLAB将执行上面的语句,并返回以下结果:
c =
14
在MATLAB中可以使用 who 命令显示所有已经使用的变量名。
who
MATLAB将执行上面的语句,并返回以下结果:
Your variables are:
a ans b c x y
whos 命令则显示多一点有关变量:
当前内存中的变量
每个变量的类型
内存分配给每个变量
无论他们是复杂的变量与否
whos
MATLAB将执行上面的语句,并返回以下结果:
Name Size Bytes Class Attributes
a 1x1 8 double
ans 1x1 8 double
b 1x1 8 double
c 1x1 8 double
x 1x1 8 double
y 1x1 8 double
clear命令删除所有(或指定)从内存中的变量(S)。
clear x % it will delete x, won't display anything
clear % it will delete all variables in the workspace
% peacefully and unobtrusively
长任务可以通过使用省略号(...)延伸到另一条线路。例如,
initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity ...
+ acceleration * time
MATLAB将执行上面的语句,并返回以下结果:
final_velocity =
196
默认情况下,MATLAB 四个小数位值显示数字。这就是所谓的 short format.
如果想更精确,需要使用 format 命令。
长(long ) 命令格式显示小数点后16位。
例如:
format long
x = 7 + 10/3 + 5 ^ 1.2
MATLAB将执行上面的语句,并返回以下结果:
x =
17.231981640639408
format short 例子:
format short
x = 7 + 10/3 + 5 ^ 1.2
MATLAB将执行上面的语句,并返回以下结果:
x =
17.2320
空格格式命令回合到小数点后两位数字。例如:
format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6
MATLAB将执行上面的语句,并返回以下结果:
weekly_wage =
1064.70
MATLAB 显示大量使用指数表示法。
短格式e命令允许以指数的形式显示小数点后四位,加上指数。
例如:
format short e
4.678 * 4.9
MATLAB将执行上面的语句,并返回以下结果:
ans =
2.2922e+01
format long e命令允许以指数的形式显示小数点后十六位,加上指数。例如:
format long e
x = pi
MATLAB将执行上面的语句,并返回以下结果:
x =
3.141592653589793e+00
format rat 格式大鼠命令给出最接近的有理表达式,从计算所得。例如:
format rat
4.678 * 4.9
MATLAB将执行上面的语句,并返回以下结果:
ans =
2063/90
向量是一维数组中的数字。 MATLAB允许创建两种类型的矢量:
行向量
列向量
创建行向量括在方括号中的元素的集合,用空格或逗号分隔的元素。
例如,
r = [7 8 9 10 11]
MATLAB将执行上面的语句,并返回以下结果:
r =
Columns 1 through 4
7 8 9 10
Column 5
11
另外一个例子,
r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t
MATLAB将执行上面的语句,并返回以下结果:
res =
Columns 1 through 4
9 11 13 15
Column 5
17
创建列向量通过内附组方括号中的元素,使用分号(;)分隔的元素。
c = [7; 8; 9; 10; 11]
MATLAB将执行上面的语句,并返回以下结果:
c =
7
8
9
10
11
矩阵是一个二维数字阵列。
在MATLAB中,创建一个矩阵每行输入空格或逗号分隔的元素序列,最后一排被划定一个分号。
例如,下面创建了一个3×3的矩阵:
m = [1 2 3; 4 5 6; 7 8 9]
MATLAB执行上述语句,并返回以下结果:
m =
1 2 3
4 5 6
7 8 9
本节的内容将提供常用的一些MATLAB命令。
在之前的篇章中我们已经知道了MATLAB数值计算和数据可视化是一个交互式程序,在它的命令窗口中您可以在MATLAB提示符“>>”下键入命令。
MATLAB提供管理会话的各种命令。如下表所示:
命令 | 目的/作用 |
---|---|
clc | 清除命令窗口。 |
clear | 从内存中删除变量。 |
exist | 检查存在的文件或变量。 |
global | 声明变量为全局。 |
help | 搜索帮助主题。 |
lookfor | 搜索帮助关键字条目。 |
quit | 停止MATLAB。 |
who | 列出当前变量。 |
whos | 列出当前变量(长显示)。 |
使用MATLAB的时候有一些系统命令可以方便我们的操作,如在当前的工作区中可以使用系统命令保存为一个文件、加载文件、显示日期、列出目录中的文件和显示当前目录等。
下表列举了一些MATLAB常用的系统相关的命令:
命令 | 目的/作用 |
---|---|
cd | 改变当前目录。 |
date | 显示当前日期。 |
delete | 删除一个文件。 |
diary | 日记文件记录开/关切换。 |
dir | 列出当前目录中的所有文件。 |
load | 负载工作区从一个文件中的变量。 |
path | 显示搜索路径。 |
pwd | 显示当前目录。 |
save | 保存在一个文件中的工作区变量。 |
type | 显示一个文件的内容。 |
what | 列出所有MATLAB文件在当前目录中。 |
wklread | 读取.wk1电子表格文件。 |
MATLAB提供了以下输入和输出相关的命令:
命令 | 作用/目的 |
---|---|
disp | 显示一个数组或字符串的内容。 |
fscanf | 阅读从文件格式的数据。 |
format | 控制屏幕显示的格式。 |
fprintf | 执行格式化写入到屏幕或文件。 |
input | 显示提示并等待输入。 |
; | 禁止显示网版印刷 |
fscanf和fprintf命令的行为像C scanf和printf函数。他们支持格式如下代码:
格式代码 | 目的/作用 |
---|---|
%s | 输出字符串 |
%d | 输出整数 |
%f | 输出浮点数 |
%e | 显示科学计数法形式 |
%g | %f 和%e 的结合,根据数据选择适当的显示方式 |
用于数字显示格式的函数有以下几种形式:
Format函数 | 最多可显示 |
---|---|
format short | 四位十进制数(默认) |
format long | 15位定点表示 |
format short e | 五位浮点表示 |
format long e | 15位浮点表示 |
format bank | 两个十进制数字 |
format + | 正,负或零 |
format rat | 有理数近似 |
format compact | 变量之间没有空行 |
format loose | 变量之间有空行 |
下表列出了MATLAB用于工作数组、矩阵和向量的各种命令:
命令 | 作用/目的 |
---|---|
cat | 连接数组 |
find | 查找非零元素的索引 |
length | 计算元素数量 |
linspace | 创建间隔向量 |
logspace | 创建对数间隔向量 |
max | 返回最大元素 |
min | 返回最小元素 |
prod | 计算数组元素的连乘积 |
reshape | 重新调整矩阵的行数、列数、维数 |
size | 计算数组大小 |
sort | 排序每个列 |
sum | 每列相加 |
eye | 创建一个单位矩阵 |
ones | 生成全1矩阵 |
zeros | 生成零矩阵 |
cross | 计算矩阵交叉乘积 |
dot | 计算矩阵点积 |
det | 计算数组的行列式 |
inv | 计算矩阵的逆 |
pinv | 计算矩阵的伪逆 |
rank | 计算矩阵的秩 |
rref | 将矩阵化成行最简形 |
cell | 创建单元数组 |
celldisp | 显示单元数组 |
cellplot | 显示单元数组的图形表示 |
num2cell | 将数值阵列转化为异质阵列 |
deal | 匹配输入和输出列表 |
iscell | 判断是否为元胞类型 |
MATLAB提供了大量的命令绘制图表。下表列出了一些常用的命令绘制:
命令 | 作用/目的 |
---|---|
axis | 人工选择坐标轴尺寸 |
fplot | 智能绘图功能 |
grid | 显示网格线 |
plot | 生成XY图 |
打印或绘图到文件 | |
title | 把文字置于顶部 |
xlabel | 将文本标签添加到x轴 |
ylabel | 将文本标签添加到y轴 |
axes | 创建轴对象 |
close | 关闭当前的绘图 |
close all | 关闭所有绘图 |
figure | 打开一个新的图形窗口 |
gtext | 通过鼠标在指定位置放注文 |
hold | 保持当前图形 |
legend | 鼠标放置图例 |
refresh | 重新绘制当前图形窗口 |
set | 指定对象的属性,如轴 |
subplot | 在子窗口中创建图 |
text | 在图上做标记 |
bar | 创建条形图 |
loglog | 创建双对数图 |
polar | 创建极坐标图像 |
semilogx | 创建半对数图(对数横坐标) |
semilogy | 创建半对数图(对数纵坐标) |
stairs | 创建阶梯图 |
stem | 创建针状图 |
我们一直强调MATLAB是一个功能强大的编程语言及交互式计算环境,之前学习的内容中,我们学会了在 MATLAB 命令提示符下输入命令,而且我们主要是把MATLAB环境作为一个计算器使用。其实,MATLAB 还允许写入到一个文件中的一系列命令和执行文件完整的单元,就好比是写一个函数,然后调用它。
在开始接下来的学习内容前,我们要先了解在 MATLAB 中的 M 文件有两种类型,详细内容请往下看:
MATLAB允许写两个程序文件:
脚本 - 脚本文件 .m 扩展程序文件。在这些文件中写的一系列命令,想一起执行。脚本不接受输入和不返回任何输出。他们在工作区中的数据操作。
函数 - 函数文件 .m 扩展程序文件。函数可以接受输入和返回输出。内部变量是本地的函数。
.m 文件不一定要使用 MATLAB 编辑器创建,其他任何的文本编辑器也是可以的。在本节中,我们将讨论的脚本文件。MATLAB 命令和函数调用的脚本文件包含多个连续的行。可以运行一个脚本,在命令行中键入其名称。
创建脚本文件,需要使用文本编辑器。可以打开 MATLAB 编辑器,可使用两个方法:
使用命令提示符
使用IDE
如果是在命令提示符下使用命令提示符下,键入编辑。这将打开编辑器。可以直接键入编辑,然后在文件名( .m 扩展程序文件名)
edit
Or
edit
上面的命令将在默认情况下,MATLAB 目录中创建文件。如果想存储在一个特定的文件夹中的所有程序文件,那么一定要提供整个路径。
让我们创建一个文件夹名为 progs。在命令提示符处键入以下命令(>>):
mkdir progs % create directory progs under default directory
chdir progs % changing the current directory to progs
edit prog1.m % creating an m file named prog1.m
如果首次创建的文件,MATLAB 会提示您进行确认。单击“Yes”。
另外,如果使用的是IDE,选择 NEW -> Script。这也打开编辑器,并创建一个文件名为命名。输入代码后可以命名并保存文件。
在编辑器中输入下面的代码:
NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
+ NonTeachingStaff;
disp(Total);
创建和保存文件后,可以运行在两个方面:
编辑器窗口中单击“Run”按钮或
只要在命令提示符下键入文件名(不含扩展名):>> prog1
命令窗口提示显示的结果是:
6170
我们在MATLAB中创建一个脚本文件,然后输入下面的代码:
a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)
编译并执行上述代码,会产生以下结果:
c =
12
d =
12.6570
e =
63.2849
f =
3.1852e-06