MATLAB 期末复习#
1 矩阵的输入方式#
>>a=[1 2 3;4 5 6; 7 8 9]
>>a=[1,2,3;4,5,6; 7,8,9]
>>a=[1:3;4:6;7:9]
>> a=[1 2 3
4 5 6
7 8 9]
a =
1 2 3
4 5 6
7 8 9
>>
2 矩阵相乘#
A * B
A(m x n) B(p x q) 当n=p时才可以相乘 线代中的矩阵相乘
A .* B
大小完全一致,对应元素相乘
3 矩阵转置#
实数矩阵转置#
A'
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> A'
ans =
1 4 7
2 5 8
3 6 9
复数矩阵转置#
A'
共轭转置
A.'
非共轭转置
>> A = [1+i 2+i 3+i; 4+i 5+i 6+i; 7+i 8+i 9+i]
A =
1.0000 + 1.0000i 2.0000 + 1.0000i 3.0000 + 1.0000i
4.0000 + 1.0000i 5.0000 + 1.0000i 6.0000 + 1.0000i
7.0000 + 1.0000i 8.0000 + 1.0000i 9.0000 + 1.0000i
>> A'
ans =
1.0000 - 1.0000i 4.0000 - 1.0000i 7.0000 - 1.0000i
2.0000 - 1.0000i 5.0000 - 1.0000i 8.0000 - 1.0000i
3.0000 - 1.0000i 6.0000 - 1.0000i 9.0000 - 1.0000i
>> A.'
ans =
1.0000 + 1.0000i 4.0000 + 1.0000i 7.0000 + 1.0000i
2.0000 + 1.0000i 5.0000 + 1.0000i 8.0000 + 1.0000i
3.0000 + 1.0000i 6.0000 + 1.0000i 9.0000 + 1.0000i
4 随机分布#
均匀分布#
>> rand(5) 产生服从[0,1]之间的均匀分布
ans =
0.8869 0.0768 0.3996 0.6761 0.7636
0.0021 0.7990 0.6387 0.1379 0.8417
0.7377 0.4168 0.6586 0.1675 0.7409
0.4085 0.2020 0.3824 0.3339 0.2610
0.5768 0.7958 0.4104 0.1429 0.9621
正态分布#
>> randn(5) 产生服从N[0,1]的标准正态分布
ans =
-0.3534 -2.1492 0.2811 -0.2420 0.1620
-0.5709 -0.5303 1.1760 0.5279 -0.0394
0.8749 0.2686 0.8725 0.5440 0.2960
-1.0153 0.2161 -0.9298 1.5400 -1.1293
0.7904 0.7901 -0.1329 -0.5585 -1.0672
均值为3 方差为9的正态分布
x~N(μ,σ²)
ax+b~N(aμ+b,(aσ)²)
aμ+b = 均值
(aσ)² = 方差
a*randn(p,q)+b
p,q 矩阵的大小为p*q
>> 3*randn(2,3)+3
ans =
6.5279 5.1196 4.8656
5.5406 -0.0497 5.2151
5 行列式#
det()
6 矩阵的逆#
inv
方阵且非奇异
pinv()
奇异 求出来是伪逆
7 矩阵的存储方式#
矩阵是按列存储的
8 矩阵求和#
矩阵求和也是按列求和的
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> sum(A)
ans =
12 15 18
9 矩阵的缩小#
>> a = [1:4;5:8;9:12;13:16]
a =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
>> b = a(2:3,3:4) 前面2:3为2行和3行 后面3:4为3列4列
b =
7 8
11 12
删除行或列
a =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
>> a(2,:)=[] 删除行
a =
1 2 3 4
9 10 11 12
13 14 15 16
>> a(:,2)=[] 删除列
a =
1 3 4
9 11 12
13 15 16
10 与或非运算#
注意非零即为1,后进行与或非逻辑运算
11 使用diag
函数生成矩阵#
例题:利用diag
等函数产生下列矩阵:
a = [0 0 8; 0 -7 5; 2 3 0]
b = [2 0 4; 0 5 0; 7 0 8]
然后利用reshape
函数将它们变换成行向量
用到的函数
用到的函数:
d=diag(A),若A是一个矩阵,则d为取A对角线元素组成的一个向量,如果A为一个向量,则d是一个以向量A为对角线上的元素构成的对角矩阵
B = fliplr(A),将矩阵A的列绕垂直轴进行左右翻转
如果A是一个行向量,fliplr(A)将A中元素的顺序进行翻转。
如果A是一个列向量,fliplr(A)还等于A。
filpup() 将矩阵上下翻转
B = reshape(A,...,[],...),指定某维数后,剩余的维数长度值用占位符[]来表示,使得维数的乘积等于prod(size(A))。
>> A=diag([8 -7 2]) %产生矩阵。元素位于对角线
A =
8 0 0
0 -7 0
0 0 2
>> B=A+diag([5 3],-1) %产生次对角线矩阵并与A相加
B =
8 0 0
5 -7 0
0 3 2
>> a=fliplr(B) %矩阵翻转
a =
0 0 8
0 -7 5
2 3 0
>> A=reshape(a,1,9) %矩阵排成行向量,`a.'对a转置,1 指定一行,9指定元素9个
A =
0 0 2 0 -7 3 8 5 0
>> q = diag([2 0 8]) % 主对角线元素
q =
2 0 0
0 0 0
0 0 8
>> r = diag([4 5 7]) % 副对角线元素
r =
4 0 0
0 5 0
0 0 7
>> w = fliplr(r) % 将副对角线元素左右镜像翻转
w =
0 0 4
0 5 0
7 0 0
>> b = q+w % 将两个矩阵相加
b =
2 0 4
0 5 0
7 0 8
>> B=reshape(b.',1,[]) % 转换成行向量
B =
2 0 4 0 5 0 7 0 8
12 变量命名要求#
在 matlab 中变量名只能由数字字母下划线组成,且必须字母
开头。matlab 中变量也是大小写敏感的。
13 .m 文件#
.m 文件可分为脚本文件和函数文件,脚本文件和函数文件需在同一文件夹下才能相互调用
脚本文件#
函数文件#
函数文件格式
function [] = 函数名()
end
14 曲线绘制#
plot#
plot(x,y)
plot(x1,y1,'op1',x2,y2,'op2',...,xn,yn)绘制平面图形
y1=2x+1
x = 1:0.1:10
y1 = 2.*x+1
y2=...
plot(x1,y1,...,x2,y2,...)
op 线型 颜色 点型
线型
- 实
: 虚
-. 点划线
-- 划线
点
+
*
.
。
x
s
d 菱形
v
^
<
>
P 五角形
h 六角形
颜色
r 红
g 绿
b 蓝
k 黑
y 黄
w 白
m 锰紫色
c 亮青色
plot3#
pot3 (x1,y1,z1,'op1',x2,y2,z2,'op2',...,xn,yn,zn,'opn') 绘制空间图形
fplot#
fplot ('fun',[a,b]) % 绘制函数 fun 在 [a,b] 的图形
fplot(@(x) 2*exp(-0.5*x)*sin(2*pi*x),[0,2*pi],'gd-')
15 曲面绘制#
生成平面网格#
meshgrid(x,y)
x = a:步长:b;
y = c:步长:d;
[x,y] = meshgrid(x,y);
x = [1 2 3 4]
y = [2 4 6]
[x y] = meshgrid(x,y);
绘制网格曲线#
mesh(x,y,z)
绘制填充型曲面#
surf(x,y,z)
绘制平面等高线#
contour(x,y,z)
绘制三维等高线#
contour3(x,y,z)
显示多个图形#
subplot(格子列,格子行,第几个)
subplot(2,2,3)%一个2列2行的格子,在第3个位置第二行第一列显示
添加标题#
title ("标题")
添加 X 轴标签#
xlabel ("x 轴标签")
添加 Y 轴标签#
ylabel ("y 轴标签")
调整刻度范围#
axis(Xmin,Xmax,Ymin,Ymax)
阵列预分配#
y=zeros(size(x))