Matlab線性代數基礎 矩陣操作

2021-08-09 03:38:59 字數 3719 閱讀 7935

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