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))