可以通过 Layout 选择需要显示的窗口及布局
使用 MATLAB 编程有两种方法
.m
文件)运算符 +
,-
,*
,/
,^
计算的结果 以 ans
显示
优先级
()
)^
)*
,/
)+
,-
)Calculate:
cos
(
(
1
+
2
+
3
+
4
)
3
5
)
sin
(
π
)
+
ln
(
tan
(
1
)
)
2
3.5
×
1.7
e
sin
(
10
)
sin(cos(pi))
与下方等价
cos(pi)
sin(ans)
多行代码 可以合为单行代码执行
MATLAB 先计算
cos(pi)
并将计算结果储存到变量ans
中
在计算sin(ans)
时, 与sin(cos(pi))
等价
=
是赋值运算符(Assignment Operator)
logical
char
numeric
int8
, int16
, int32
, int64
, uint8
, uint16
, uint32
, uint64
single
double
cell
struct
who
与 whos
使用命令 who
可以查看当前变量
使用命令 whos
可以查看当前变量及其数据类型
>> a = 5
a =
5
>> a * 6
ans =
30
>> who
Your variables are:
a ans
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
ans 1x1 8 double
ans
i,j
: complex numberInf
:
∞
\infty
∞eps
:
2.2207
e
−
016
2.2207e-016
2.2207e−016NaN
: not a numberpi
:
π
\pi
π>> x = 1/0
x =
Inf
>> x = inf / inf
x =
NaN
以上均是关键字
使用命令 iskeyword
显示关键字
>> iskeyword
ans =
20×1 cell array
{'break' }
{'case' }
{'catch' }
{'classdef' }
{'continue' }
{'else' }
{'elseif' }
{'end' }
{'for' }
{'function' }
{'global' }
{'if' }
{'otherwise' }
{'parfor' }
{'persistent'}
{'return' }
{'spmd' }
{'switch' }
{'try' }
{'while' }
例如:
>> cos='This String.';
>> cos(8) % 字符向量的第8个元素
ans =
'r'
>> clear % 清除全部变量
>> cos(8)
ans =
-0.1455
注意: 不要使用 内置函数 或 关键字 作为变量名
默认数字格式为 short
显示小数点后四位
使用 format [style]
指定数字格式
Style | Result | Example |
---|---|---|
short | Short, fixed-decimal format with 4 digits after the decimal point. | 3.1416 |
long | Long, fixed-decimal format with 15 digits after the decimal point for double values, and 7 digits after the decimal point for single values. | 3.141592653589793 |
shortE | Short scientific notation with 4 digits after the decimal point. | 3.1416e+00 |
longE | Long scientific notation with 15 digits after the decimal point for double values, and 7 digits after the decimal point for single values. | 3.141592653589793e+00 |
bank | Currency format with 2 digits after the decimal point. | 3.14 |
hex | Hexadecimal representation of a binary double-precision number. | 400921fb54442d18 |
rat | Ratio of small integers. 以有理数形式显示结果 | 355/113 |
观察以下两个命令的不同
>> a = 10
>> b = 10;
命令后加 ;
表示不向终端显示结果
与其他终端相同, 使用 ↑ \uparrow ↑ 快速输入之前的命令
clc
清空命令窗口clear
清除工作区的所有变量
clear [variable]
who
查看工作区的变量whos
查看工作区变量的详细信息Array (Vector and Matrix) Input
>> a = [1 2 3 4]
>> b = [1; 2; 3; 4]
>> a * b
ans =
30
>> b * a
ans =
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
A
=
[
1
21
6
5
17
9
31
2
7
]
A=
>> A = [1 21 6; 5 17 9; 31 2 7]
A =
1 21 6
5 17 9
31 2 7
注意: 与其他编程语言中不同, MATLAB 中向量的下标从 1 开始
>> A = [1 21 6; 5 17 9; 31 2 7]
A =
1 21 6
5 17 9
31 2 7
>> A(8)
ans =
9
>> A([1 3 5])
ans =
1 31 17
>> A([1 3; 1 3])
ans =
1 31
1 31
>> A(3,2)
ans =
2
>> A([1 3], [1 3])
ans =
1 6
31 7
观察以上命令运行的结果 可以看出 MATLAB 获取矩阵中元素的方法
A([index])
从上往下, 从左往右 对元素从 1 开始标号A([1 3 5])
取出下标为 1 3 5 的元素, 结果为数组A([1 3; 1 3])
取出下标为 1 3 的元素 放在矩阵的第一行, 再取出下标为 1 3 的元素 放在矩阵的第二行A([row], [column])
根据(行,列)坐标取出元素A([1 3], [1 3])
取出 ([行 行], [列 列]) 交点上的元素 放入矩阵, 也就是 第 1, 3 行 与 第 1,3 列 交点上的元素完成以下赋值
A
=
[
1
21
6
5
17
9
31
2
7
]
⟹
[
1
76
6
5
17
9
31
0
7
]
⟹
[
1
0
0
5
0
0
31
0
7
]
⟹
[
1
0
0
5
0
0
]
A=\left[
提示 请先看完下面的冒号运算符
A(3,:)
表示选中第三列的全部
A(3,:)=[]
让第三列等于一个空向量, 就是删除第三列
如果想要创建这样的数组:
A
=
[
1
2
3
⋯
100
]
A =
可以使用冒号运算符(Colon Operator)
语法
j
:
k
⟹
[
j
,
j
+
1
,
j
+
2
,
⋯
,
j
+
m
]
j
:
i
:
k
⟹
[
j
,
j
+
i
,
j
+
2
i
,
⋯
,
j
+
m
×
i
]
start:length:end
未指定步长时, 默认步长为 1
A
=
[
1
2
3
⋯
100
]
A = A=[1:100]
创建
相同形状的矩阵可以连接在一起
例如:
>> A=[1 2; 3 4];
>> B=[9 9; 9 9];
>> F=[A B]
F =
1 2 9 9
3 4 9 9
>> F=[A; B]
F =
1 2
3 4
9 9
9 9
+
,-
,*
,/
,^
,.
,'
对以下矩阵:
A
=
[
1
2
3
4
5
4
9
8
7
]
B
=
[
3
3
3
2
4
9
1
3
1
]
a
=
2
A=\left[
做如下运算:
>> A
A =
1 2 3
4 5 4
9 8 7
>> B
B =
3 3 3
2 4 9
1 3 1
>> a
a =
2
>> A+a
ans =
3 4 5
6 7 6
11 10 9
>> A/a
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 2.0000
4.5000 4.0000 3.5000
>> A./a
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 2.0000
4.5000 4.0000 3.5000
>> A^a
ans =
36 36 32
60 65 60
104 114 108
>> A.^a
ans =
1 4 9
16 25 16
81 64 49
>> A'
ans =
1 4 9
2 5 8
3 4 7
>> A+B
ans =
4 5 6
6 9 13
10 11 8
>> A*B
ans =
10 20 24
26 44 61
50 80 106
>> A.*B
ans =
3 6 9
8 20 36
9 24 7
>> A/B
ans =
0.0714 0.2857 0.2143
1.1667 0 0.5000
3.2619 -0.2857 -0.2143
>> A./B
ans =
0.3333 0.6667 1.0000
2.0000 1.2500 0.4444
9.0000 2.6667 7.0000
.
加上运算符, 表示矩阵对应元素间的运算 而不是矩阵之间的运算
'
表示对矩阵求转置
注意: 矩阵不能相除, 这里矩阵间的除法运算 与
A
×
B
−
1
A\times B^{-1}
A×B−1 的结果大概相等
也就是表示对一个空间, 先进行
A
A
A 线性变化, 然后再进行
B
B
B 线性变化的逆变化
这里涉及到了 线性代数的本质
简要概括为:
- 矩阵
- 形式上看, 是一个数表
- 本质上是对空间施加线性变化
- 对矩阵求逆(
inv()
)之后再相乘, 表示“还原变化”- 行列式
- 形式上看, 是一个数
- 本质上是经过 行列式对应矩阵 所代表的线性变化后
线性空间内图形的 长度(1维)/面积(2维)/体积(3维)/… 变化的倍数- 对矩阵求对应行列式的值:
det()
linespace()
:eye(n)
: 主对角线上全是
1
1
1, 其他地方全为
0
0
0 的
n
×
n
n\times n
n×n 矩阵zeros(n1,n2)
:
n
1
×
n
2
n_1\times n_2
n1×n2 零矩阵ones(n1,n2)
:
n
1
×
n
2
n_1\times n_2
n1×n2 单位矩阵diag()
: 输入数组, 会将数组元素放在对角线上, 其他元素全为零rand()
: 生成随机矩阵max(A)
找出 A 矩阵中每一列最大的元素 结果为行向量
max(max(A))
min()
用法与 max()
一样
sum(A)
对 A 每一列的元素求和 结果为行向量
mean(A)
对 A 的每一列求平均数 结果为行向量
sort(A)
对 A 的每一列进行排序, 从上到下递增
sortrows(A)
对 A 的第一列进行排序 同时把对应列所在行也进行移动
例如
>> A=[1 2 3; 0 5 6; 7 0 9]
A =
1 2 3
0 5 6
7 0 9
>> sortrows(A)
ans =
0 5 6
1 2 3
7 0 9
size(A)
得到 A 矩阵的阶数 结果为两个数 第一个数为行数 第二个数为列数
length(A)
得到 A 向量的长度
find(A==[num])
返回 A 矩阵中等于 [num]
的元素的下标