Tangwx

Tangwx

博客网站

MATLAB期末複習

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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。