2、矩陣的基本操作
2.1 矩陣的修改
1、矩陣的擴充:d = [a;b c] a為原來的矩陣,b c為包含要擴充的元素,d為擴充結果
2、刪除行:a= [m; :] = [ ]:刪除m行
3、a=[:,n]=[ ]:刪除第n列
4、a(m,n)=a,對m行n列的元素進行賦值為a。
5、a(m, :)=[a,b……]:對m行進行賦值。
6、a(:, n)=[a,b……]:對n列進行賦值。
例項:
>> a = magic(5
a = 17241
815235
714164
6132022
1012
1921311
182529
>> a(:,4:
5)=%%對4行5行進行賦值為空,即為刪除4、5行。
a = 17241
23574
6131012
1911
1825
2.矩陣的拼接:cat()、vercat()、horzcat();
呼叫格式:
c = cat(dim,a ,b):引數dim為連線方向,dim的選值:
dim = 1,垂直方向上拼接矩陣;
dim = 2,水平方向上拼接矩陣;
dim = 3, 生成三維矩陣。
c = horzcat(a1,a2,a3,……),水平方向拼接多個矩陣a1,a2……,此時引數中的矩陣必須具有相同的行數。
c = vercat(a1,a2,a3,……),豎直方向拼接多個矩陣a1,a2……,此時引數中的矩陣必須具有相同的列數。
矩陣拼接的例項:
>> a = magic(3);
b = pascal(3);
c = cat(3,a,b);
d = vertcat(a,b);
>> e = horzcat(a,b);
>> c
c(:,:,1) =
8163574
92c(:,:,2) =
1111231
36>> d
d = 816
3574
9211
1123
136>> e
e = 816
1113
5712
3492
136>>
2.3矩陣的變向:
rot90(a):實現矩陣a的逆矩陣的90°;
rot90(a,k);實現矩陣a逆時針旋轉90°的k倍;
filplf(a):實現a矩陣的左右翻轉;
flipud(a):實現a矩陣的上下翻轉。
旋轉的例項:
>> a
a = 816
3574
92>> rot90(a)
ans =
6721598
34>> flipud(a)
ans =
4923578
16>>
2.4矩陣的抽取:主要是實現對對角元素和上下三角陣的抽取。對角矩陣和三角矩陣的抽取呼叫格式為:
x = diag(v,k);其中v是乙個向量,k為相對於矩陣x的對角線的偏移,k大於1,表示在對角線以上(右上)反之:k為負數,在主對角線左下。當k=0,表示對v賦值為x的主對角線。
例項:
x = diag(v,k)的運用例項:
以向量v的元素作為矩陣x的第k條對角線元素,當k=0時,v為x的主對角線;當k>0時,v為上方第k條對角線;當k<0時,v為下方第k條對角線。
例:>> v=[1
23];
>> x=diag(v,-1)
x = 000
0100
0020
0003
0>> x = diag([1,1,1],0)
x = 100
0100
01>>
矩陣的抽取tril()函式
l =tril(x):返回x矩陣的下三角部分,其餘部分以0補全;
l = tril(x,k):返回x矩陣的第k 條對角線以下的元素,其餘補全0;k=0為表示為主對角線,k<0為左下,k>0為右上。
l =triu(x):返回矩陣x的上三角部分。
l = triu(x,k):返回x矩陣的第k 條對角線以上的元素,其餘補全0;k=0為表示為主對角線,k<0為左下,k>0為右上。
例項:
>> tril(ones(4,4),-1)
ans =
0000100
0110
0111
0>> triu(ones(4,4),-1)
ans =
1111111
1011
1001
1>>
2.5矩陣塊操作:
矩陣的分塊操作呼叫格式:
b =repmat(a,m,n)或者b = repmat(a,[m,n]):產生大的矩陣b,對矩陣a 這個塊進行mxn的合成:最後生成的b的a的行列數乘以mxn的分別積
例子:a為2x2,生成mxn為2x3的矩陣,結果為4x9列。
>>b=repmat( [1
2;34],2,3)%a為2x2,生成mxn為2x3的矩陣,結果為4x9列。
b = 12
1212
3434
3412
1212
3434
34
b =repmat(a,[m,n,p]):a為矩陣,m,n,p分別是生成m行、n列、p維的矩陣
例子:
b = repmat(eye(2),[2,1,2])
b(:,:,1) =
1001100
1b(:,:,2) =
1001100
1>>
另外還有乙個塊操作函式:blkdiag(a,b,c,d……),把a,b,c,d多個矩陣作為物件塊,產生新的矩陣。
3.6、矩陣的轉置:a』
例子:
>> a = [1,2,3
;4,5,6]
a = 123
456>> a'
ans =
14253
6
從例子中看得出:矩陣轉置就是行變換為列,列變換為行。
3.7、矩陣的尺寸改變
reshape(b,m,n, p):b為待2重置的矩陣,m,n,p為新建的行、列、頁數
reshape(b,……[ ] ,……):b為待重置的陣列,【】為被置空的列或者行,其中【】x行(列)等於b的總元素數。
注意,改變矩陣的尺寸,但是矩陣的總元素數不變:sum(size(b))=m+n+p。
例項:
>> a = [123
4;7 8 9 6;4 5 7 9;1 5 7 9]
a = 123
4789
6457
9157
9>> b= reshape(a,2,8)
b = 142
5374
9718
5976
9>>
Matlab的線性代數矩陣基礎
我們知道,matlab是乙個和強大的高效程式語言,無論在數學大規模運算和影象操作上都是佔據很大市場比率的。但是呢matlab是基於矩陣的資料結構的語言,所以需要深刻掌握matlab語言,需要了解矩陣在它的語法中的運用。下面是本人在學習matlab時,總結的線性代數知識。一 matlab的矩陣建立和操...
線性代數基礎
向量是由n個數組成的n行1列或1行n列的有序陣列 向量點乘 內積,數量積 運算結果是乙個標量,可以計算兩個向量間的夾角以及a向量在b向量方向上的投影,點積的意義是測量兩個向量同向的程度。向量叉乘 外積,向量積 運算結果是乙個向量,並與這兩個向量組成的平面垂直 向量的線性組合 先數乘後疊加 a1v1 ...
線性代數基礎
兩兩正交且模為1 a cdot b left a right left b right cos left a right 設向量b的模為1,則a與b的內積值等於a向b所在直線投影的向量長度。要準確描述向量,首先要確定一組基,然後給出在基所在的各個直線上的投影值,就可以了。a times b left...