PS:主要是講解矩陣的相應的實現方法,其實MATLAB的很大一部分的優勢,就是集成了矩陣級別的運算,並以此為特點,可以進行多維空間上的驗證。
讓我們懂得了原來線性代數如此有用= - =。
(一)MATLAB矩陣
一、矩陣的建立
1、直接輸入法創建:
還可以有復數矩陣的建立,有兩種方法:
(1)直接按照直接輸入法來建立矩陣,但是元素可以直接打成復數的形式(a+bj)
(2)還有就是分別建立一個實部還有一個虛部的矩陣,然后通過(a+bj)就可以得到。
2、M文件建立矩陣
就是把建立的矩陣存在一個文件里,下次直接調用就可以了。然后方法如下(下一篇日志會敘述)
3、利用冒號表達式建立一個向量
(1)e1:e2:e3
其中e1為初始值,e2為步長,e3為終止值(只取到小於或者等於終止值就可以了),
如果e2省略,那么默認步長為1;
(2)lidspace(a,b,n)
a,b是生成向量的第一個和最后一個元素,n是元素總數。
4、建立大矩陣(由方括號中的小矩陣或者向量組合起來)
5、通過MATLAB集成的交互界面進行創建(最快)
(1)找到新建變量,並單擊
(2)然后就可以進行新建變量了
1處可以改變變量名字,2處可以進行矩陣的輸入,3處可以查看矩陣在內存中是否保存,沒有的話請按Ctrl+s。
二、矩陣的拆分
1、矩陣元素
(1)可以直接通過下標進行修改和訪問,如果超過了原來矩陣的維度,會自動擴充,並且未填充的元素置為0。
(2)矩陣元素是按照列來存儲,先第一列然后第二列。然后下標和序號可以一一對應,然后由對應的sub2ind和ind2sub求得
2、矩陣拆分
(1)用冒號表達式來獲得子矩陣
a、a( : ; j )表示取a矩陣的第j列的全部元素;同樣的a(i;:)表示取a矩陣第i行的全部元素。也可以直接飲用對應下標取單獨的元素。
b、里面可以嵌套冒號表達式,這樣子就可以取出一個小的矩陣。例子如下
c、end表示最后一個數。
(2)利用空矩陣刪除矩陣的元素
clear是把變量從空間中刪除,而[]則是賦值成一個空的矩陣。
同樣可以使用引用,進行數組的置空
三、特殊矩陣
1、通用的特殊矩陣:
zeros | 產生0的矩陣 |
ones | 產生1的矩陣 |
eye | 產生對角矩陣 |
rand | 產生0~1間均勻分布的隨機矩陣 |
randn | 產生矩陣為0,方差為1的標准正態分布隨機矩陣 |
2、用於專門學科的特殊矩陣
(1)魔方矩陣(每行每列每對角線都相等)
magic(n): 生成n階的魔方陣。
(2)范德蒙德矩陣
(3)希爾伯特矩陣
hilb(n) n階希爾伯特矩陣
invhilb(n) n階希爾伯特的逆矩陣
(4)托普利茲矩陣
toeplitz(x,y)
(5)伴隨矩陣
(二)MATLAB運算
一、算術運算
1、基本算數運算
(1)加減
(2)乘法
(3)除法
(4)乘方
這些運算主要都要服從矩陣的運算法則。維度不符合matlab會進行報錯。
2、點運算
格式是在正常的符號前面加上一個“.”就好了。
運算的結果就是對矩陣中的每個元素相應的運算就好了,
二、關系運算
1、關系運算符:
< | 小於 |
<= | 小於等於 |
> | 大於 |
>= | 大於等於 |
== | 等於 |
~= | 不等於 |
2、運算法則:
(1)標量對標量:直接進行運算
(2)矩陣對矩陣:每個元素對應進行運算
(3)標量對矩陣:標量對每個元素進行運算
最后是真的為“1”,假的為“0“。
PS:在這里記下一個求求余數的函數rem
三、邏輯運算
1、邏輯運算符。
2、運算法則同上。
PS:運算符的優先級排序:算術>關系>邏輯
3、其他相應的一些邏輯函數(通過名字來記住功能)
(三)矩陣分析
一、對角陣與三角陣
1、對角陣
(1)提取矩陣對角線上的元素: diag(A), diag(A,k)
(2)構造對角陣: diag(A)
對每行每列進行相同乘數的運算,用對角陣相乘,左乘(對每行進行相乘),右乘(對每列進行相乘)
2、三角陣
(1)上三角陣
triu(A):將A變成一個上三角矩陣(下半邊為0)
triu(A,k):將矩陣A的第k條對角線以上的元素
(2)下三角矩陣
tril(A)
tril(A,k)
二、矩陣的轉置與旋轉
1、矩陣的轉置
(1)轉置運算符是單撇號(’)
(2)作用就是求轉置,但是請注意不是求逆矩陣。
2、矩陣的旋轉
(1)運算符號:rot(A,k)
就是將矩陣逆時針旋轉k*90°的角度。如果單單旋轉90°就可以直接省略k這個參數。
3、矩陣的左右翻轉
(1)運算符號:fliplr(A)
4、矩陣的上下翻轉
(1)運算符號:flipud(A)
三、矩陣的逆與偽逆
1、矩陣的逆
(1)定義:A·B=B·A=E,就稱A和B互為逆矩陣。
(2)運算函數:inv(A)
(3)應用:可以用來求解線性方程組
2、矩陣的違逆
(1)定義:我們知道在矩陣不是滿秩的時候是沒有逆矩陣的。但是可以找到一個與A的轉置矩陣A`同型的矩陣B,使得滿足矩陣的逆的定義。此時稱矩陣B為矩陣A的違逆。
(2)運算函數:pinv(A)
四、矩陣的行列式
運算函數:det(A)
五、矩陣的秩與跡
1、矩陣的秩
(1)定義:就是一個矩陣的行數和列數線性無關的數目
(2)運算函數:rank(A)
2、矩陣的跡
(1)定義:就是矩陣對角陣上的元素之和。
(2)運算函數:trace(A)
六、向量和矩陣的范數
1、定義:用來度量矩陣或者向量在某種意義下的長度。
2、向量的3種常用范數以及計算函數
3、范數的三個性質:
(1)非負性
(2)齊次性
(3)滿足施瓦茨不等式(a,b)<=(a,a)(b,b)
4、矩陣的范數及其計算函數
運算函數同向量的。
七、矩陣的條件數
(1)定義:在求解線性方程組時,如果系數的微小改變會導致最終結果的很大改變,稱系數矩陣為病態矩陣,而不會導致最終結果的很大改變的話,則是良性矩陣,然后條件數便是來衡量這一情況的一個參數。
條件數等於A的范數與A的逆矩陣的范數的乘積。這樣的話,條件數總是大於1的,如果越接近於1的話,性能越好。
(2)函數為:
八、矩陣的特征值與特殊矩陣
(六)字符串
1、規則:
(1)用單引號括起來就是字符串。
(2)然后字符串可以寫成一個矩陣,但是一個字母是一個元素,所以一定要保證矩陣的維數是正確的。
(3)如果字符串本身有單引號,就要加2個單引號。
(4)較長的字符串可以用字符串向量表示,及用[]括起來。
(八)稀疏矩陣
一、矩陣存儲方式
1、完全儲存方式:就是之前我們使用的方式
二、稀疏儲存方式的產生:
1、將完全儲存方式轉化為稀疏矩陣的方式
(1)A=sparse(S):將矩陣S轉化為稀疏儲存方式的矩陣A
(2)sparse的其他調用方式:
sparse(m,n):生成一個m*n的所有元素都是0的稀疏矩陣
sparse(u,v,S):u,v,S是3個等長的向量。S是要建立的稀疏矩陣的非零元素,u,v是行列下標,然后S是相應的元素值。
(3)其他操作的方式:
[u,v,s]=find(A):返回矩陣A中非零元素的下標和元素。
full(A):返回和稀疏儲存矩陣A對應的完全儲存方式矩陣。