1. 程式人生 > >MATLAB程式設計教程(2)——MATLAB矩陣及其運算

MATLAB程式設計教程(2)——MATLAB矩陣及其運算

2MATLAB矩陣及其運算
2.1
變數和資料操作
2.2MATLAB
矩陣
2.3MATLAB
運算
2.4
矩陣分析
2.5
矩陣的超越函式
2.6
字串
2.7
結構資料和單元資料
2.8
稀疏矩陣

2.1變數和資料操作

2.1.1變數與賦值
1
.變數命名MATLAB 6.5中,變數名是以字母開頭,後接字母、數字或下劃線的字元序列,最多63個字元。在MATLAB中,變數名區分字母的大小寫。

2.賦值語句
(1)
變數=表示式
(2)
表示式其中表達式是用運算子將有關運算量連線起來的式子,其結果是一個矩陣。

2-1計算表示式的值,並顯示計算結果。MATLAB命令視窗輸入命令:
x=1+2i;
y=3-sqrt(17);
z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))

其中pii都是MATLAB預先定義的變數,分別代表代表圓周率π和虛數單位。輸出結果是:
z =
-0.3488 + 0.3286i

2.1.2預定義變數

MATLAB工作空間中,還駐留幾個由系統本身定義的變數。例如,用pi表示圓周率π的近似值,用ij表示虛數單位。預定義變數有特定的含義,在使用時,應儘量避免對這些變數重新賦值。

2.1.3記憶體變數的管理
1
.記憶體變數的刪除與修改
MATLAB
工作空間視窗專門用於記憶體變數的管理。在工作空間視窗中可以顯示所有記憶體變數的屬性。當選中某些變數後,再單擊Delete按鈕,就能刪除這些變數。當選中某些變數後,再單擊Open按鈕,將進入變數編輯器。通過變數編輯器可以直接觀察變數中的具體元素,也可修改變數中的具體元素。

clear命令用於刪除MATLAB工作空間中的變數。whowhos這兩個命令用於顯示在MATLAB工作空間中已經駐留的變數名清單。who命令只顯示出駐留變數的名稱,whos在給出變數名的同時,還給出它們的大小、所佔位元組數及資料型別等資訊。

2.記憶體變數檔案利用MAT檔案可以把當前MATLAB工作空間中的一些有用變數長久地保留下來,副檔名是.matMAT檔案的生成和裝入由saveload命令來完成。常用格式為:
save
檔名 [變數名錶][-append][-ascii]
load
檔名[變數名錶][-ascii]

其中,檔名可以帶路徑,但不需帶副檔名.mat,命令隱含一定對

.mat檔案進行操作。變數名錶中的變數個數不限,只要記憶體或檔案中存在即可,變數名之間以空格分隔。當變數名錶省略時,儲存或裝入全部變數。-ascii選項使檔案以ASCII格式處理,省略該選項時檔案將以二進位制格式處理。save命令中的-append選項控制將變數追加到MAT檔案中。

2.1.4MATLAB常用數學函式
MATLAB
提供了許多數學函式,函式的自變數規定為矩陣變數,運演算法則是將函式逐項作用於矩陣的元素上,因而運算的結果是一個與自變數同維數的矩陣。函式使用說明:
(1)
三角函式以弧度為單位計算。
(2) abs
函式可以求實數的絕對值、複數的模、字串的ASCII碼值。
(3)
用於取整的函式有fixfloorceilround,要注意它們的區別。
(4) rem
mod函式的區別。rem(x,y)mod(x,y)要求x,y必須為相同大小的實矩陣或為標量。

2.1.5資料的輸出格式
MATLAB
用十進位制數表示一個常數,具體可採用日常記數法和科學記數法兩種表示方法。在一般情況下,MATLAB內部每一個數據元素都是用雙精度數來表示和儲存的。資料輸出時使用者可以用format命令設定或改變資料輸出格式。format命令的格式為:
format
格式符其中格式符決定資料的輸出格式

2.2MATLAB矩陣

2.2.1矩陣的建立
1
.直接輸入法最簡單的建立矩陣的方法是從鍵盤直接輸入矩陣的元素。具體方法如下:將矩陣的元素用方括號括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。

2.利用M檔案建立矩陣對於比較大且比較複雜的矩陣,可以為它專門建立一個M檔案。下面通過一個簡單例子來說明如何利用M檔案建立矩陣。

2-2利用M檔案建立MYMAT矩陣。
(1)
啟動有關編輯程式或MATLAB文字編輯器,並輸入待建矩陣:
(2)
把輸入的內容以純文字方式存檔(設檔名為mymatrix.m)
(3)
MATLAB命令視窗中輸入mymatrix,即執行該M檔案,就會自動建立一個名為MYMAT的矩陣,可供以後使用。

3.利用冒號表示式建立一個向量冒號表示式可以產生一個行向量,一般格式是:
e1:e2:e3
其中e1為初始值,e2為步長,e3為終止值。MATLAB中,還可以用linspace函式產生行向量。其呼叫格式為:
linspace(a,b,n)
其中ab是生成向量的第一個和最後一個元素,n是元素總數。顯然,linspace(a,b,n)a:(b-a)/(n-1):b等價。
4
.建立大矩陣大矩陣可由方括號中的小矩陣或向量建立起來。

2.2.2矩陣的拆分
1
.矩陣元素通過下標引用矩陣的元素,例如
A(3,2)=200
採用矩陣元素的序號來引用矩陣元素。矩陣元素的序號就是相應元素在記憶體中的排列順序。在MATLAB中,矩陣元素按列儲存,先第一列,再第二列,依次類推。例如
A=[1,2,3;4,5,6];
A(3)
ans =
2
顯然,序號(Index)與下標(Subscript )是一一對應的,以m×n矩陣A為例,矩陣元素A(i,j)的序號為(j-1)*m+i。其相互轉換關係也可利用sub2indind2sub函式求得。

2.矩陣拆分
(1)
利用冒號表示式獲得子矩陣 A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。 A(i:i+m,:)表示取A矩陣第ii+m行的全部元素;A(:,k:k+m)表示取A矩陣第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第ii+m行內,並在第kk+m列中的所有元素。此外,還可利用一般向量和end運算子來表示矩陣下標,從而獲得子矩陣。end表示某一維的末尾元素下標。

(2) 利用空矩陣刪除矩陣的元素MATLAB中,定義[]為空矩陣。給變數X賦空矩陣的語句為X=[]。注意,X=[]clear X不同,clear是將X從工作空間中刪除,而空矩陣則存在於工作空間中,只是維數為0

2.2.3特殊矩陣
1
.通用的特殊矩陣常用的產生通用特殊矩陣的函式有:
zeros
:產生全0矩陣(零矩陣)
ones
:產生全1矩陣(么矩陣)
eye
:產生單位矩陣。
rand
:產生01間均勻分佈的隨機矩陣。
randn
:產生均值為0,方差為1的標準正態分佈隨機矩陣。

2-3分別建立3×33×2和與矩陣A同樣大小的零矩陣。
(1)
建立一個3×3零矩陣。
zeros(3)
(2)
建立一個3×2零矩陣。
zeros(3,2)
(3)
A2×3矩陣,則可以用zeros(size(A))建立一個與矩陣A同樣大小零矩陣。
A=[1 2 3;4 5 6];%
產生一個2×3階矩陣A
zeros(size(A))%
產生一個與矩陣A同樣大小的零矩陣

2-4 建立隨機矩陣:
(1)
在區間[20,50]內均勻分佈的5階隨機矩陣。
(2)
均值為0.6、方差為0.15階正態分佈隨機矩陣。命令如下:
x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
此外,常用的函式還有reshape(A,m,n),它在矩陣總元素保持不變的前提下,將矩陣A重新排成m×n的二維矩陣。

2.用於專門學科的特殊矩陣
(1)
魔方矩陣魔方矩陣有一個有趣的性質,其每行、每列及兩條對角線上的元素和都相等。對於n階魔方陣,其元素由1,2,3,…,n2n2個整陣列成。MATLAB提供了求魔方矩陣的函式magic(n),其功能是生成一個n階魔方陣。

2-5101~12525個數填入一個55列的表格中,使其每行每列及對角線的和均為565
M=100+magic(5)

(2) 範得蒙矩陣範得蒙(Vandermonde)矩陣最後一列全為1,倒數第二列為一個指定的向量,其他各列是其後列與倒數第二列的點乘積。可以用一個指定向量生成一個範得蒙矩陣。在MATLAB中,函式vander(V)生成以向量V為基礎向量的範得蒙矩陣。例如,A=vander([1;2;3;5])即可得到上述範得蒙矩陣。

(3) 希爾伯特矩陣MATLAB中,生成希爾伯特矩陣的函式是hilb(n)使用一般方法求逆會因為原始資料的微小擾動而產生不可靠的計算結果。MATLAB中,有一個專門求希爾伯特矩陣的逆的函式invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。

2-64階希爾伯特矩陣及其逆矩陣。命令如下:
format rat%
以有理形式輸出
H=hilb(4)
H=invhilb(4)

(4) 託普利茲矩陣託普利茲(Toeplitz)矩陣除第一行第一列外,其他每個元素都與左上角的元素相同。生成託普利茲矩陣的函式是toeplitz(x,y),它生成一個以x為第一列,y為第一行的託普利茲矩陣。這裡x, y均為向量,兩者不必等長。toeplitz(x)用向量x生成一個對稱的託普利茲矩陣。例如
T=toeplitz(1:6)

(5) 伴隨矩陣
MATLAB
生成伴隨矩陣的函式是compan(p),其中p是一個多項式的係數向量,高次冪係數排在前,低次冪排在後。例如,為了求多項式的x3-7x+6的伴隨矩陣,可使用命令:
p=[1,0,-7,6];
compan(p)

(6) 帕斯卡矩陣我們知道,二次項(x+y)n展開後的係數隨n的增大組成一個三角形表,稱為楊輝三角形。由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。函式pascal(n)生成一個n階帕斯卡矩陣。

2-7(x+y)5的展開式。MATLAB命令視窗,輸入命令:
pascal(6)
矩陣次對角線上的元素1,5,10,10,5,1即為展開式的係數。

2.3  MATLAB運算
2.3.1
算術運算
1
.基本算術運算
MATLAB
的基本算術運算有:+()、-()*()/(右除)/(左除)^(乘方)注意,運算是在矩陣意義下進行的,單個數據的算術運算只是一種特例。

(1) 矩陣加減運算假定有兩個矩陣AB,則可以由A+BA-B實現矩陣的加減運算。運算規則是:若AB矩陣的維數相同,則可以執行矩陣的加減運算,AB矩陣的相應元素相加減。如果AB的維數不相同,則MATLAB將給出錯誤資訊,提示使用者兩個矩陣的維數不匹配。

(2) 矩陣乘法假定有兩個矩陣AB,若Am×n矩陣,Bn×p矩陣,則C=A*Bm×p矩陣。

(3) 矩陣除法MATLAB中,有兩種矩陣除法運算://,分別表示左除和右除。如果A矩陣是非奇異方陣,則A/BB/A運算可以實現。A/B等效於A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效於A矩陣的逆右乘B矩陣,也就是B*inv(A)對於含有標量的運算,兩種除法運算的結果相同,如3/44/3有相同的值,都等於0.75。又如,設a=[10.5,25],則a/5=5/a=[2.1000 5.0000]。對於矩陣來說,左除和右除表示兩種不同的除數矩陣和被除數矩陣的關係。對於矩陣運算,一般A/BB/A

(4) 矩陣的乘方一個矩陣的乘方運算可以表示成A^x,要求A為方陣,x為標量。
2
.點運算MATLAB中,有一種特殊的運算,因為其運算子是在有關算術運算子前面加點,所以叫點運算。點運算子有.*././.^。兩矩陣進行點運算是指它們的對應元素進行相關運算,要求兩矩陣的維引數相同。

2.3.2關係運算
MATLAB
提供了6種關係運算符:<(小於)<=(小於或等於)>(大於)>=(大於或等於)==(等於)、~=(不等於)。它們的含義不難理解,但要注意其書寫方法與數學中的不等式符號不盡相同。

關係運算符的運演算法則為:
(1)
當兩個比較量是標量時,直接比較兩數的大小。若關係成立,關係表示式結果為1,否則為0
(2)
當參與比較的量是兩個維數相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關係運算規則逐個進行,並給出元素比較結果。最終的關係運算的結果是一個維數與原矩陣相同的矩陣,它的元素由01組成。

(3) 當參與比較的一個是標量,而另一個是矩陣時,則把標量與矩陣的每一個元素按標量關係運算規則逐個比較,並給出元素比較結果。最終的關係運算的結果是一個維數與原矩陣相同的矩陣,它的元素由01組成。

2-8產生5階隨機方陣A,其元素為[10,90]區間的隨機整數,然後判斷A的元素是否能被3整除。
(1)
生成5階隨機方陣A
A=fix((90-10+1)*rand(5)+10)
(2)
判斷A的元素是否可以被3整除。
P=rem(A,3)==0
其中,rem(A,3)是矩陣A的每個元素除以3的餘數矩陣。此時,0被擴充套件為與A同維數的零矩陣,P是進行等於(==)比較的結果矩陣。

2.3.3邏輯運算
MATLAB
提供了3種邏輯運算子:&()|()和~()邏輯運算的運演算法則為:
(1)
在邏輯運算中,確認非零元素為真,用1表示,零元素為假,用0表示。
(2)
設參與邏輯運算的是兩個標量ab,那麼,
a&ba,b
全為非零時,運算結果為1,否則為0
a|ba,b
中只要有一個非零,運算結果為1aa是零時,運算結果為1;當a非零時,運算結果為0

(3) 若參與邏輯運算的是兩個同維矩陣,那麼運算將對矩陣相同位置上的元素按標量規則逐個進行。最終運算結果是一個與原矩陣同維的矩陣,其元素由10組成。
(4)
若參與邏輯運算的一個是標量,一個是矩陣,那麼運算將在標量與矩陣中的每個元素之間按標量規則逐個進行。最終運算結果是一個與矩陣同維的矩陣,其元素由10組成。
(5)
邏輯非是單目運算子,也服從矩陣運算規則。
(6)
在算術、關係、邏輯運算中,算術運算優先順序最高,邏輯運算優先順序最低。

2-9建立矩陣A,然後找出大於4的元素的位置。
(1)
建立矩陣A
A=[4,-65,-54,0,6;56,0,67,-45,0]
(2)
找出大於4的元素的位置。
find(A>4)

2.4 矩陣分析
2.4.1
對角陣與三角陣
1
.對角陣只有對角線上有非0元素的矩陣稱為對角矩陣,對角線上的元素相等的對角矩陣稱為數量矩陣,對角線上的元素都為1的對角矩陣稱為單位矩陣。

(1) 提取矩陣的對角線元素Am×n矩陣,diag(A)函式用於提取矩陣A主對角線元素,產生一個具有min(m,n)個元素的列向量。
diag(A)
函式還有一種形式diag(A,k),其功能是提取第k條對角線的元素。
(2)
構造對角矩陣V為具有m個元素的向量,diag(V)將產生一個m×m對角矩陣,其主對角線元素即為向量V的元素。
diag(V)
函式也有另一種形式diag(V,k),其功能是產生一個n×n(n=m+)對角陣,其第k條對角線的元素即為向量V的元素。

2-10先建立5×5矩陣A,然後將A的第一行元素乘以1,第二行乘以2,第五行乘以5
A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;...
11,18,25,2,19];
D=diag(1:5);
D*A%
D左乘A,對A的每行乘以一個指定常數

2.三角陣三角陣又進一步分為上三角陣和下三角陣,所謂上三角陣,即矩陣的對角線以下的元素全為0的一種矩陣,而下三角陣則是對角線以上的元素全為0的一種矩陣。

(1) 上三角矩陣求矩陣A的上三角陣的MATLAB函式是triu(A)
triu(A)
函式也有另一種形式triu(A,k),其功能是求矩陣A的第k條對角線以上的元素。例如,提取矩陣A的第2條對角線以上的元素,形成新的矩陣B
(2)
下三角矩陣MATLAB中,提取矩陣A的下三角矩陣的函式是tril(A)tril(A,k),其用法與提取上三角矩陣的函式triu(A)triu(A,k)完全相同。

2.4.2矩陣的轉置與旋轉
1
.矩陣的轉置轉置運算子是單撇號(‘)
2
.矩陣的旋轉利用函式rot90(A,k)將矩陣A旋轉90ºk倍,當k1時可省略。
3

相關推薦

MATLAB程式設計教程(2)——MATLAB矩陣及其運算

第2章MATLAB矩陣及其運算 2.1變數和資料操作 2.2MATLAB矩陣 2.3MATLAB運算 2.4矩陣分析 2.5矩陣的超越函式 2.6字串 2.7結構資料和單元資料 2.8稀疏矩陣 2.1變數和資料操作 2.1.1變數與賦值 1.變數命名在MATLAB 6.

C程式設計 | 資料的表現形式及其運算

·在計算機高階語言中,資料的兩種表現形式: 常量 變數 ·常量 1.整型常量:整數常量即1個整數值,有3種數制形式 十進位制數:以非0開始的數,如:220、-560、+369 八進位制數:以0開始的數,如:06、0106、0677 十六進位制數

線性代數複習-矩陣及其運算

1、 對於齊次線性方程組(常數項矩陣為零矩陣),若係數矩陣|A|≠0|A|≠0,則沒有非零解,否則有非零解。 2、對角陣∧=diag(λ1,λ2,⋯,λn)∧=diag(λ1,λ2,⋯,λn) ∧

線性代數複習筆記——第二章 矩陣及其運算(1)

目錄: 1 線性方程組和矩陣 2 矩陣的運算 3 逆矩陣 4 克拉默法則 5 矩陣分塊法 1.線性方程和矩陣 從左上角到右下角的直線(叫做對角線)以外的元素都是 0的方陣稱為對角矩陣,簡稱對角陣.對角陣也記作A = dia

Matlab高級教程_第二篇:Matlab相見恨晚的模塊_02_並行運算-2

OS str all bat eat 支持 12個 量化 log 1  MATLAB並行計算-從個人桌面到遠程集群和雲(陳偉/魏奮)視頻摘錄筆記 https://cn.mathworks.com/videos/parallel-computing-with-matlab-9

matlab符號及其運算2

1.巢狀符號表達式 horner函式實現對符號表達式進行巢狀 R = horner(P):P為待巢狀的符號表達式,R為巢狀後的符號表達式 >> syms x y >> horner(x^3 - 6*x^2 + 11*x - 6) ans = x*

Matlab高級教程_第二篇:Matlab相見恨晚的模塊_02_並行運算-利用GPU並行執行MATLAB程序

設備編號 randn sim 數據 src eth 使用 locks too 1  MATLAB原文:   如果所有你想使用的函數支持GPU,你能夠使用gpuArray把輸入的數據傳輸到GPU,也能夠喚起gather命令把傳輸值GPU的數據回收。 2  通過gpuDevic

MATLAB矩陣——2.4矩陣的特征值與特征向量

pan strong tla str 產生 text 全部 atl spa 求矩陣的特征值與特征向量 函數的調用格式有2種 E=eig(A):求矩陣A的全部特征值,構成向量E [X,D]=eig(A):求矩陣A的全部特征值,構成對角陣D,並產生矩陣X,X各列是相應的特征向量

MATLAB矩陣——2.3矩陣求值

-a center ace tlab trac 2.3 矩陣 sum pan 方陣的行列式 把一個方陣看作一個行列式,並對其按照行列式的規則求值,這個值就稱為方陣所對應的行列式的值 函數det(A)求方陣A對應的行列式的值 矩陣的秩 rank(A),求矩陣A的秩 矩陣的跡

MATLAB入門學習-#3-矩陣基礎#2特殊矩陣的建立和程式示例

MATLAB入門學習-#3-矩陣基礎#2特殊矩陣的建立和程式示例 1.零矩陣zeros 2.么矩陣ones 3.單位矩陣eye 4.隨機矩陣rand&randn 5.魔方矩陣magic 6.Hilbert矩陣 7.Toepli

MATLAB入門學習-#2-矩陣基礎#1

MATLAB入門學習-#2-矩陣基礎#1 1.建立一個矩陣 2.矩陣的簡單操作 MATLAB的各種資料型別,在MATLAB中均以矩陣的形式存在(標量、向量都是特殊的矩陣),矩陣是MATLAB最基本的資料物件。

matlab符號及其運算(1)

matlab中提供了強大的符號運算功能,可以按照推理解析的方法進行運算 1.字元型資料變數的建立 var = 'expression' 字元型變數是以矩陣的形式存在MATLAB的工作空間中的 >> C = 'china' C = china >> A = '1

Matlab從入門到精通(七)--矩陣基本運算

31、稀疏矩陣的建立 函式  sparse 格式  S = sparse(A)   %將矩陣A轉化為稀疏矩陣形式,即由A的非零元素和下標構成稀疏矩陣S。若A本身為稀疏矩陣,則返回A本身。 S = sparse(m,n)   %生

Matlab從入門到精通(六)--矩陣基本運算

1、行向量的定義 rowvec = [1.2 3 56]; 2、列向量的定義 colvec = [1.2;3;56]; 3、逐個元素的分配矩陣 B(1,1) = 1 ; B(1,2) = 2 ; B(2,1) = 3 ; B(2,2) = 4 ; B = &n

matlab多項式及其運算

0 建立多項式 多項式的一般形式如下: 我們可以使用它的係數向量來表示, matlab中,提供了poly2sym函式實現多項式的構造。 r = poly2sym(c):c為多項式的係數向量 r = poly2sym(c, v):c為多項式的係數向量,v為其變數

matlab中的三種2維卷積運算

1.full 如下圖:                                   圖(1)  圖中藍色為原影象,白色為對應卷積所增加的padding,通常全部為0,綠色是卷積後圖片。圖的卷積的滑動是從卷積核右下角與圖片左上角重疊開始進行卷積,滑動步長為1,卷積核

壓縮感知中的常見測量矩陣及其MATLAB實現程式碼

題目:壓縮感知的常見測量矩陣         下面首先給出十篇參考文獻中有關測量矩陣的敘述,然後以一篇碩士論文中對七種常見測量矩陣的描述依據,給出了這七種常見測量矩陣的MATLAB實現程式碼,以為以後的研究提供一個參考,由於目前還沒有一個簡單有效的測量矩陣評價方法,因此

MATLAB基礎教程2) 語言基礎知識

本教程主要講到MATLAB語法、運算子、資料型別、陣列索引及處理等等語言基礎知識。大概可分四大部分: 第一部分:輸入命令 ans 當未明確定義輸出變數的名字時,MATLAB會自動建立一個變數ans來接收計算的結果。 clc MATLAB中的清屏命令

C#與MATLAB通信-2

fopen clas 時速 end available 文本 time div txt -1 與-2 都是通過桌面的文本文件.txt來實現C#與MATLAB端的數據傳輸,這個txt文件就起到了中間的連接,但若將服務器端放在雲服務器上,因為不在同一臺計算機中,所以不能找到一個

《DSP using MATLAB》Problem 2.4

fprintf day 4.4 sin tle oda problem 技術 pri 生成並用stem函數畫出這幾個序列。 1、代碼: %% ----------------------------------------------------------------