基础语法
简单计算
- 计算次幂
Trial>>3^2
ans=
9
- 数学表达式
Trial>>123*23.259
ans=
2.8609e+03
Matlab为某些数学符号提供了特殊的表达式,如pi
为π
,Inf
为∞
,i
orj
为
(√−1)
(
−
1
)
,.Nan
表示“非数字”
分号的使用
;
表语句的结束。若要抑制和隐藏表达式输出,需要加;
注释
%
——行注释
%{
与%}
——块注释
常用运算符
运算符 | 使用说明 |
---|---|
^ | 标量和矩阵求幂运算符 |
\ | 左除法运算符 |
/ | 右除法运算符 |
: | 生成规则间隔的元素,并表示整个行或列 |
() | 包含函数参数和数组索引; 覆盖优先级 |
[] | 罩住阵列元素 |
… | 行连续运算符 |
_ | 引用符号和转置运算符 |
特殊变量和常数
名称 | 含义 |
---|---|
ans | 最近的回应/回答 |
eps | 浮点精度精度 |
i 、j | 虚构单位√-1 |
Inf | 无穷 |
NaN | 未定义的数值结果(非数字) |
pi | π |
命名变量
变量名称由一个字母组成,后跟字母,数字或下划线。
MATLAB区分大小写。
保存
save
用于在工作空间中保存所有变量,它在当前目录中,以.mat
作为扩展名的文件
save mymat.mat
可用load
重新加载文件
load mymat.mat
变量
每个变量都是数组或矩阵
Trial>>x=3 %它创建一个名为x的1×1矩阵,并将值3存储在其元素中。
x=
3
注意
1. 当变量输入到系统中,可以在接下来代码中引用。
2. 变量在使用前必须有值
3. 当表达式返回未分配给任何变量的结果时,系统将其分配给名为ans的变量
例如
Trial>>sqrt(99)
ans=
9.9499
可以使用这个ans
变量
多重分配赋值
在同一行上拥有多个赋值
Trial>>a=2;b=7;c=a*b
c=
14
变量历史
who
显示使用过的所有变量名
Trial>>who
您的变量为:
ans x y
whos
显示:
1. 当前内存中的变量
2. 变量类型
3. 变量的内存分配
4. 是否是复合变量
Trial>>whos
Name Size Bytes Class Attributes
ans 1x1 8 double
x 1x1 8 double
y 1x1 8 double
清除命令
clear x %delete variable x
clear %delete all variables in the workspace
长任务
可用...
扩展到另一行
如
Trial>> initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity ...
+ acceleration * time
final_velocity =
196
格式命令
默认情况,Matlab显示4为小数,这称为短格式
format long
显示十进制后的16位数字
如
Trial>>format long
x = 7 + 10/3 + 5 ^ 1.2
x=
17.231981640639408
Trial>> format short
x = 7 + 10/3 + 5 ^ 1.2
x =
17.2320
format bank
将数字舍入小数点后2位。
如
Trial>> format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6
weekly_wage =
1064.70
format short e
以指数形式显示4位小数加上指数
Trial>> format short e
4.678 * 4.9
ans =
2.2922e+01
format long e
以指数形式显示16位小数加指数
Trial>> format long e
x = pi
x =
3.141592653589793e+00
format rat
给出计算结果最接近的合理表达式
Trial>> format rat
4.678 * 4.9
ans =
2063/90
创建向量
Matlab允许两种向量
- 行向量
- 列向量
行向量
行向量是通过用方括号中的元素集合来创建的,使用空格或逗号分隔元素。
如
r=[7 8 9 10 11]
Trial>> r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t
res =
9 11 13 15 17
列向量
列向量通过用方括号中的元素集合来创建,使用分号;
来分隔元素
Trial>> c = [7; 8; 9; 10; 11]
c =
7
8
9
10
11
创建矩阵
通过将每行作为一系列空格或逗号分隔的元素输入矩阵,并以行号分隔一行
例如创建一个3x3
的矩阵:
Trial>> m = [1 2 3; 4 5 6; 7 8 9]
m =
1 2 3
4 5 6
7 8 9
命令
管理会话的命令
命令 | 说明 |
---|---|
clc | 清除命令窗口 |
clear | 删除变量 |
exist | 检查文件or变量是否存在 |
global | 声明全局变量 |
quit | 停止 |
who | 列出变量 |
whos | 列出变量详细信息 |
系统命令
命令 | 说明 |
---|---|
cd | 进入指定目录 |
date | 显示当前日期 |
delete | 删除文件 |
dir | 列出当前目录所有文件 |
loas | 从文件加载工作区变量 |
path | 显示搜索路径 |
pwd | 显示当前目录 |
save | 将工作区变量保存在文件中 |
type | 显示文件内容 |
what | 列出当前目录中所有MATLAB文件 |
输入输出命令
命令 | 说明 |
---|---|
disp | 显示数组或字符串内容 |
fscanf | 从文件读取格式化数据 |
fprintf | 对屏幕或文件执行格式化的写入 |
input | 显示提示并等待输入 |
; | 禁止打印显示 |
fscanf
和fprintf
支持以下格式代码
命令 | 说明 |
---|---|
%s | 格式化为字符串 |
%d | 格式化为字符串整数值 |
%f | 格式化为浮点值 |
%e | 格式化为科学记数法的浮点值 |
%g | 格式最紧凑的形式:%f 或%e |
\n | 换行 |
\t | 制表符 |
format
命令以下
命令 | 说明 |
---|---|
format short | 十进制数4位小数 |
format long | 16位 |
format short e | 4位小数加指数 |
format long e | 16位小数加指数 |
format bank | 2位小数 |
format + | 正、负、0 |
format rat | 有理近似 |
format compact | 禁止一些换行符 |
format loose | 重置为较不紧凑的显示模式 |
向量、矩阵和数组命令
命令 | 说明 |
---|---|
cat | 连接数组 |
find | 查找非零元素的索引 |
length | 计算元素数量 |
linspace | 创建规则间隔的向量 |
logspace | 创建对数间隔向量 |
max | 返回最大元素 |
min | 返回最小元素 |
prod | 产生每列 |
reshape | 改变大小 |
size | 计算数组大小 |
sort | 对每列排序 |
sum | 对每列求和 |
eye | 创建单位矩阵 |
ones | 创建一个数组 |
zeros | 创建一个零的数组 |
cross | 计算矩阵交叉积 |
dot | 计算矩阵点积 |
det | 计算矩阵行列式 |
inv | 计算矩阵倒数 |
pinv | 计算矩阵伪逆 |
rank | 计算矩阵的秩 |
rref | 计算简化行阶梯形式 |
cell | 创建单元格数组 |
celldisp | 显示单元格数组 |
cellplot | 显示单元格阵列的图形表示 |
num2cell | 将数组转换为单元格数组 |
deal | 匹配输入和输出列表 |
iscell | 识别单元格数组 |
绘图命令
命令 | 说明 |
---|---|
axis | 设置轴限制 |
fplot | 智能绘图 |
grid | 显示网格线 |
plot | 生成xy 坐标图 |
print | 打印或绘图到文件 |
title | 顶部放置文字 |
xlabel | 将文本标签添加到x 轴 |
ylabel | 将文本标签添加到y 轴 |
axes | 创建轴对象 |
close | 关闭当前坐标图 |
close all | 关闭所有坐标图 |
figure | 打开新的图形窗口 |
hold | 冻结当前坐标图 |
Matlab .m脚本文件
MATLAB允许编写两种程序文件
- 脚本 。 脚本文件是以.m扩展名的程序文件。在这些文件中,可以编写一系列要一起执行的命令。脚本不接受输入,不返回任何输出。它们对工作空间中的数据进行操作。
- 函数。函数文件也是扩展名为.m的程序文件。函数可以接受输入和返回输出。内部变量是函数的局部变量。
使用MATLAB编辑器或任何其他文本编辑器来创建.m文件。 在本节中,我们将讨论脚本文件。 脚本文件包含多个连续的MATLAB命令行和函数调用。可以通过在命令行中键入其名称来运行脚本。
创建和运行脚本文件
要创建脚本文件,需要使用文本编辑器。可以通过两种方式打开MATLAB编辑器:
- 使用命令提示符
- 使用IDE
如果使用命令提示符,请在命令提示符下键入edit
并回车,这将打开编辑器。可以直接键入edit
,然后直接输入文件名(扩展名为.m
)
edit
%或者%
edit newfile.m
在命令行中也可以创建文件夹,如:创建一个名为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
创建并保存文件后,可以通过两种方式运行:
- 单击编辑器窗口上的“运行”按钮
- 只需在命令提示符下键入文件名(无扩展名)即可:>> prog1
一个栗子
a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)
编译后
Trial>> sdemo
c =
12
d =
12.6570
e =
63.2849
f =
3.1852e-06
Matlab数据类型
当MATLAB遇到新的变量名称时,它将创建变量并分配适当的内存空间。
如果变量已经存在,则MATLAB将使用新内容替换原始内容,并在必要时分配新的存储空间。
基本数据类型
MATLAB提供15
种基本数据类型。每种数据类型存储矩阵或数组形式的数据。矩阵或数组的最小值是0
到0
,并且是可以到任何大小的矩阵或数组。
下表显示了MATLAB中最常用的数据类型
数据类型 | 描述 |
---|---|
int8 | 8位有符号整数 |
uint8 | 8位无符号整数 |
int16 | 16位有符号整数 |
uint16 | 16位无符号整数 |
int32 | 32位有符号整数 |
uint32 | 32位无符号整数 |
int64 | 64位有符号整数 |
uint64 | 64位无符号整数 |
single | 单精度数值数据 |
double | 双精度数值数据 |
logical | bool 型变量 |
char | 字符型数据 |
数据类型转换
函数 | 说明 |
---|---|
char | 转换为字符数组(字符串) |
int2str | 将整数数据转换为字符串 |
mat2str | 将矩阵转换为字符串 |
num2str | 将数字转换为字符串 |
str2double | 将字符串转换为双精度值 |
str2num | 将字符串转换为数字 |
bin2dec | 将二进制数字串转换为十进制数 |
dec2bin | 将十进制转换为字符串中的二进制数 |
dec2hex | 将十进制转换为十六进制数字 |
数据类型确定
Matlab提供了用于识别数据类型的函数
函数 | 说明 |
---|---|
is | 检测状态 |
isa | 确定输入是否是指定类的对象 |
isvector | 确定输入是否为向量 |
isinteger | 确定输入是否为整数数组 |
isscalar | 确定输入是否为标量 |
决策语句
语句 | 说明 |
---|---|
if...end 语句 | if ... end 语句包含一个布尔表达式,后跟一个或多个语句。 |
向量
引用向量的元素
向量v
的第i
个分量叫作v(i)
Trial>> v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements
v(3)
ans =
3
引用带冒号的向量(如v(:)
)时,将列出向量的所有元素
Trial>> v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements
v(:)
ans =
1
2
3
4
5
6
例如,创建一个9个元素的行向量rv
,然后通过rv(3:7)
引用3
到7
元素,然后引用来向一个新创建的sub_rv
向量赋值。
Trial>> rv = [1 2 3 4 5 6 7 8 9];
sub_rv = rv(3:7)
sub_rv =
3 4 5 6 7
向量转置
使用'
表示向量的转置,如r'
表示向量r
的转置向量
%.m
r = [ 1 2 3 4 ];
tr = r';
v = [1;2;3;4];
tv = v';
disp(tr); disp(tv);
%运行结果
1
2
3
4
1 2 3 4
附加向量
MATLAB允许将多个向量附加在一起来创建新的向量。
假设,如果有两个具有n
和m
个元素的行向量r1
和r2
,通过附加这两个向量来创建nxm
个元素的行向量r -
r=[r1;r2]
%要做到这一点,这两个向量应该具有相同数量的元素。
列向量同理
向量的幅值(大小)
具有元素为v1
,v2
,v3
,…,vn
的向量v
的幅值(大小)由下列公式求出:
采取以下步骤计算向量大小
1. 以向量的乘积为单位,使用数组乘法
.*
。产生向量
sv
,向量
sv
的元素是向量
v
的元素的平方。即:
sv = v.*v
2. 使用
sum
函数得到向量
v
的元素的平方和,也称为向量
v
的点积。即:
dp= sum(sv)
3. 使用
sqrt
函数得到和的平方根,也是向量
v
的大小。即:
mag = sqrt(s)