基本矩陣操作(一)

2022-09-11 08:12:12 字數 4229 閱讀 5815

目錄

矩陣:矩陣式數學上的概念,最早來自於方程組的係數及常數所構成的方針。作為一種變換或者對映算符的體現,矩陣運算有著明確而嚴格的數學規則。

陣列:計算機程式設計領域的概念。在matlab中其存在目的是為了使資料管理方便,操作簡單,命令形式自然,執行計算有效。

在matlab中,矩陣是以陣列的形式存在的,一維陣列相當於向量,二維陣列相當於矩陣,所以矩陣式陣列的子集。

直接賦值法構造簡單矩陣

簡單矩陣採用矩陣構造符號——方括號,同行的元素之間用,或者空格間隔,行與行之間用分號;。

例如:

>> a=[1 2 3;4 5 6;7 8 9]

a = 1 2 3

4 5 6

7 8 9

>> b=[1,2,3;4,5,6;7,8,9]

b = 1 2 3

4 5 6

7 8 9

>>

特殊矩陣

特殊矩陣的構造一般都是用matlab特定的函式來實現。

函式名稱

函式功能

ones(n)

構建乙個n x n的1矩陣(矩陣的元素全部是1)

ones(m,n,.. p)

構建乙個m x n...p的1矩陣

ones( size(a))

構建乙個和矩陣a同樣大小的1矩陣

zeros(n)

構建乙個n x n的0矩陣(輸出矩陣的元素全部是0)

zeros(m, n,…, p)

構建乙個m x n x..x p的0矩陣

zeros(size(a))

構建乙個和矩陣a同樣大小的0矩陣

eye(n)

構建乙個n x n的單位矩陣

eye(m, n)

構建乙個m x n的單位矩陣

eye( size(a))

構建乙個和矩陣a同樣大小的單位矩陣

magic(n)

構建乙個n x n的矩陣,其每一行、每一列的元素之和都相等

rand(n)

構建乙個n x n的矩陣,其元素為0-1之間均勻分布的隨機數

rand(m,n,… p)

構建乙個m x n x..p的矩陣,其元素為0-1之間均勻分布的隨機數

randn (n)

構建乙個n x n的矩陣,其元素為零均值、單位方差的正態分佈隨機數

randn (m, n,. p)

構建乙個m x n x..p的矩陣,其元素為零均值、單位方差的正態分佈隨機數

diag(c2)

構建乙個n維的方陣,它的主對角線元素值取自向量x,其餘元素的值都為0

diag(a, k)

構建乙個由矩陣a第k條對角線的元素組成的列向量k=0為主對角線; k<0為下第k條對角線; k>0為上第k條對角線

diag(x, k)

構建乙個(n+|k|) x (n+|k|)維的矩陣,該矩陣的第k條對角線元素取自向量x,其餘元素都為0(關於引數k,參考上個命令)

triu(a)

構建乙個和a大小相同的上三角矩陣,該矩陣的主對角線上元素為a中相應元素,其餘元素都為0

triu(a, k)

構建乙個和a大小相同的上三角矩陣,該矩陣的第k條對角線及其以上元素為a中相應元素,其餘元素都為0

tril (a)

構建乙個和a大小相同的下三角矩陣,該矩陣的主對角線上元素為a中相應元素,其餘元素都為0

tril(a, k)

構建乙個和a大小相同的下三角矩陣,該矩陣的第k條對角線上及其以下元素為a中相應元素,其餘元素都為0

樣例:

>> magic(5)

ans =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

>>

向量、標量和空矩陣

向量:單行或單列的矩陣稱為向量。

標量:1 x 1的矩陣稱為標量,矩陣只有乙個元素

空矩陣:行和列數至少有乙個為0的矩陣。

空矩陣和0矩陣的區別:空矩陣內沒有任何元素不占用儲存空間。而0矩陣表示該矩陣中所有的元素全部為0,需要儲存空間。

矩陣大小及結構的改變一般也是由函式來實現。

函式名稱

函式功能

fliplr(a)

矩陣每一行均進行逆序排列

flipud(a)

矩陣每一列均進行逆序排列

flipdim(a, dim)

生成乙個在dim維矩陣a內的元素交換位置的多維矩陣

rot90(a)

生成乙個由矩陣a逆時針旋轉90度而得到的新矩陣

ro190(a,k)

生成乙個由矩陣a逆時針旋轉k×90.而得到的新矩陣

reshape(a, m, n)

生成乙個m x n x p維的矩陣,其元素以線性索引的順序從矩陣a中取得如果矩陣a中沒有mxnx.p個元素,將返回乙個錯誤資訊

repmat(a. [m n...p])

建立乙個和矩陣a有相同元素的mxnx.xp塊的多維矩陣

shiftdim(a, n)

矩陣的列移動n步。n為正數,矩陣向左移; n為負數,矩陣向右移

squeeze(a)

返回沒有空維的矩陣a

cat(dim,a, b)

將矩陣a和b組合成乙個dim維的多維矩陣

permute(a, order)

根據向量order來改變矩陣a中的維數順序

ipermute(a, order)

進行命令permute的逆變換

sort(a)

對一維或二維矩陣進行公升序排序,並返回排序後的矩陣;當a為二維矩陣時,對矩陣的每一列分別進行排序

sort(a, dim)

對矩陣按指定的方向進行公升序排序,並返回排序後的矩陣.當dim=1時,對矩陣的每一列排序dim=2時,對矩陣的每一行排序

sort(a, dim, mode)

mode為'ascend'時,進行公升序排序; mode為'descend'時,進行降序排序

[b, lx]=sort(a,...)

lx為排序後備元素在原矩陣中的行位置或列位置的索引

在matlab中二維陣列的數字索引分為雙下標索引和單下標索引。雙下標比較簡單就類似於座標的形式,而單下表索引需要注意。但下表索引的方式式採用列優先的方式對矩陣元素進行編號。如下圖中4x4矩陣的編號:15

91326

101437

111548

1216

矩陣下標訪問單個矩陣元素

常用的矩陣索引表示式:

索引表示式

函式功能

a(1)

將二維矩陣a重組為一維陣列,返回陣列中第乙個元素

a(:,j)

返回二維矩陣a中第j列列向量

a(i,:)

返回二維矩陣a中第i行行向量

a(:,j:k)

返回由二維矩陣a中的第j列到第k列列向量組成的子矩陣

a(i:k,:)

返回由二維矩陣a中的第i行到第k行行向量組成的子矩陣

a(i:k,j:l)

返回由二維矩陣a中的第i行到第k行行向量和第j列到第l列列向量的交集組成的子矩陣

a(: )

將矩陣a中的每列合併成乙個長的列向量

a(j:k)

返回乙個行向量,其元素為a(:)中的第j個元素到第k個元素

a([j1 j2 ...])

返回乙個行向量,其元素為a(:)中的第j1、j2元素

a(:,[j1 j2 ...])

返回矩陣a的第j1列、第j2列等的列向量

a([i1 i2 ...],: )

返回矩陣a的第i1行、第i2行等的行向量

a([i1 i2 ...],[j1 j2 ...])

返回矩陣第1行、第2行等和第j列、第2列等的元素

線性引用元素

訪問多個矩陣元素

sum(a(1:4,4))							%求第4列前四個元素的和

sum(a(:,4)) %求第4列所有元素的和

sum(a(:,end)) %求矩陣最後一列元素的和

b=a(1:3:10) %

MATLAB教程(一) 基本操作與矩陣輸入

操作符 運算結果被存放在乙個叫ans的臨時變數中 不清楚怎麼表達可以搜matlab官網的inference 巢狀運算 sin cos pi 可以分開計算為cos pi sin ans 從而使表示式更簡潔。定義 a 10 不可以寫成10 a 優先順序 自定義變數的優先順序最高,為了不覆蓋原來的意義,應...

Matlab向量 矩陣基本操作

1 向量的建立 1 直接輸入 行向量 a 1,2,3,4,5 列向量 a 1 2 3 4 5 2 用 生成向量 a j k 生成的行向量是a j,j 1,k a j d k 生成行向量a j,j d,j m d m fix k j d 3 函式linspace 用來生成資料按等差形式排列的行向量 x...

稀疏矩陣的基本操作

include include include includeusing namespace std template class sparsematrix sparsematrix int arr,size t row,size t col,const t invalid row row col ...