参考文献《MATLAB语言常用算法程序集合》
1.变量与常量
(1)变量:是数值计算的基本单元,变量名字区分大小写。
名称 | 说明 |
---|---|
format short | 短格式(5位定点数) |
format long | 长格式(15位定点数) |
format short e | 短格式e方法 |
format long e | 长格式e方法 |
format bank | 2位十进制格式 |
format short e | 十六进制格式 |
测试一下
>> format short
>> test = 12.3
test =
12.3000
>> format long
>> test = 12.3
test =
12.300000000000001
>>
由测试结果显示可知:short显示的是4位小数而不是5位,与参考书有出处,具体原因仍待考证。目前以实际测量为准。
(2)常量:指在MATLAB中已经预先定义其数值的变量。MATLAB默认常量见下表。
名称 | 说明 |
---|---|
pi | 圆周率 |
inf | 无穷大 |
NaN(或者nan) | 代表不定值(0/0) |
realmax | 最大正实数 |
realmix | 最小正实数 |
eps | 浮点数的相对误差 |
i(或者j) | 虚数单位 |
nargin | 函数实际输入参数个数 |
nargout | 函数实际输出参数个数 |
ans | 默认变量名,以应答最近一次操作运算结果 |
2.字符串
字符串作为字符数组用单引号' '
引用到程序中。
3.元胞数组
元胞是元胞数组的基本组成部分。元胞可以存放任何类型、任何大小的数组,而且同一个元胞数组中各元胞的内容可以不同。
使用花括号{ }
表示元胞数组的内容,使用圆括号()
表示元胞元素。
使用celldisp函数可以显示元胞数组。
>> a = {'字符串',100,ones(2,3)}
a =
'字符串' [100] [2x3 double]
>>
上述元胞数组包括了一个字符串、一个常量100、一个2*3的矩阵
>> celldisp(a)
a{1} =
字符串
a{2} =
100
a{3} =
1 1 1
1 1 1
>>
可以使用celldisp函数查看数组内容
4.构架数组
构架数组也能存放各类数据,使用指针的方式传递数值,使用.
操作符连接结构变量名和属性名,例如使用parameter.temperature
表示某一个对象的温度参数,使用parameter.humidity
表示这个对象的湿度参数等。
因此该构架数组由两个属性组成。
5.对象
面向对象的MTALAB语言采用了多种对象,如自动控制中常用到的,传递函数模型对象(tf object)、状态空间模型对象(ss object),零极点模型对象(zpk object)
1.建立矩阵
矩阵以左方括号[
开始,以右方括号]
结束,每一行元素用分号;
分割,每行中每个元素用空格或者,
分割。
>> a = [1,2,3;4,5,6]
a =
1 2 3
4 5 6
>> b = [1 2;3 4]
b =
1 2
3 4
>>
继续输入
>> c = [a;7,8,9]
c =
1 2 3
4 5 6
7 8 9
可以看到,在原来矩阵基础上加一行,得到新矩阵c
2.访问矩阵
- 单个元素的访问:c(3,2),访问第3行第2列
c =
1 2 3
4 5 6
7 8 9
>> c(3,2)
ans =
8
- 整列元素的访问:访问第3列元素
>> c(:,3)
ans =
3
6
9
- 整行元素的访问:访问第1行元素
>> c(1,:)
ans =
1 2 3
- 整块元素的访问:访问一个(2*2)的1-2行,2-3列组成的子块矩阵
>> c(1:2,2:3)
ans =
2 3
5 6
3.常用特殊矩阵生成函数
函数名称 | 说明 |
---|---|
zeros() | 生成元素全为0的矩阵 |
ones() | 生成元素全为1的矩阵 |
rand() | 生成均匀分布随机矩阵 |
randn() | 生成正态分布随机矩阵 |
magic() | 生成魔方矩阵 |
diag() | 生成对角矩阵 |
triu() | 生成上三角矩阵 |
tril() | 生成下三角矩阵 |
eye() | 生成单位矩阵 |
company() | 生成伴随矩阵 |
hilb() | 生成Hilbert矩阵 |
vander() | 生成vander矩阵 |
hankel() | 生成hankel矩阵 |
hadamard() | 生成hadamard矩阵 |
4.常用矩阵函数运算
函数名称 | 说明 |
---|---|
rot90() | 矩阵逆时针旋转90度 |
flipud() | 矩阵上下翻转 |
fliplr() | 矩阵左右翻转 |
flipdim() | 矩阵的某维元素翻转 |
shiftdim() | 矩阵的元素移位 |
eig() | 计算矩阵的特征值与特征向量 |
rank() | 计算矩阵的秩 |
trace() | 计算矩阵的迹 |
norm() | 计算矩阵的范数 |
poly() | 计算矩阵的特征方程的根 |
通过eig()函数计算矩阵a的特征向量b和特征值c
>> a = [1,2,3;4,5,6;7,8,9]
a =
1 2 3
4 5 6
7 8 9
>> [b,c] = eig(a)
b =
-0.2320 -0.7858 0.4082
-0.5253 -0.0868 -0.8165
-0.8187 0.6123 0.4082
c =
16.1168 0 0
0 -1.1168 0
0 0 -0.0000
>>
5.常用矩阵分解运算函数
函数名称 | 说明 |
---|---|
eig() | 矩阵的特征值分解 |
qr() | 矩阵的QR分解 |
schur() | 矩阵的Schur分解 |
svd() | 矩阵的奇异值分解 |
chol() | 矩阵的Cholesky分解 |
lu() | 矩阵的LU分解 |
通过lu()函数对矩阵a进行LU分解,得到上三角阵U、下三角阵L、置换矩阵P
>> a = [6,2,1;2,3,1;1,1,1]
a =
6 2 1
2 3 1
1 1 1
>> [L,U,P] = lu(a)
L =
1.0000 0 0
0.3333 1.0000 0
0.1667 0.2857 1.0000
U =
6.0000 2.0000 1.0000
0 2.3333 0.6667
0 0 0.6429
P =
1 0 0
0 1 0
0 0 1
>>
如有不对的地方欢迎大家指正交流