matlab 矩陣操作

2022-01-11 16:14:24 字數 3667 閱讀 1107

>_<:矩陣構造

1.簡單矩陣構造

最簡單的方法是採用矩陣構造符「」。構造1´n矩陣(行向量)時,可以將各元素依次放入矩陣構造符內,並且以空格或者逗號分隔;構造m´n矩陣時,每行如上處理,並且行與行之間用分號分隔。

2.特殊矩陣構造

在matlab中還提供一些函式用來構造特殊矩陣,這些函式如下表所示。

(1)ones(n) 或ones(m,n)產生mxn全為1的矩陣

(2)zeros(n) 或 zeros(m,n)產生mxn全為0的矩陣

(3)eye(n)產生nxn的單位矩陣

(4)diag(v)將向量v轉化為乙個對角矩陣

(5)magic(n)產生nxn的模方矩陣[每行每列之和相等]

(6)rand(n)或 rand(m,n)產生mxn的隨機矩陣,其中隨機數分布服從0~1的均勻分布

(7)randn(n) 或 randn(m,n)產生mxn的隨機矩陣,其中隨機數服從標準高斯分布[均值為0方差為1]

(8)randperm(n)產生1~n的隨機排列

3.向量構造

最簡單的方法是採用向量構造符「:」,其常用的用法如下。

(1)a:b  返回以a為起點,以1為步長,且所有取值在a與b之間的向量。

(2)a:s:b 返回以a為起點,以s為步長,且所有取值在a與b之間的向量。

>_<:矩陣大小的改變

1.矩陣的合併

矩陣的合併就是把兩個或者兩個以上的矩陣連線成乙個新矩陣。矩陣構造符 可用於構造矩陣,並可以作為乙個矩陣合併操作符。

ø  表示式c=[a b]在水平方向合併矩陣a和b [具有相同行數的兩個矩陣,合併為乙個新矩陣,否則不行]

ø  表示式c=[a;b]在豎直方向合併矩陣a和b [具有相同列數的兩個矩陣,合併為乙個新矩陣,否則不行]

2.函式呼叫合併矩陣

(1)cat(1,a,b)和[a;b]一樣  cat(2,a,b)和[a b]一樣

(2)horzcat(a,b)和[a b]一樣

(3)vertcat(a,b)和[a;b]一樣

(4)repmat(a,m,n)得到mxn塊矩陣,每塊都為a

(5)blkdiag(a,b)得到以矩陣a和b為對角塊的矩陣

>_<:矩陣行列的刪除

1、刪除矩陣的某一行或者是某一列:只需將該行或者該列賦予乙個空矩陣即可:a(2,:)=第二行為空

>_<:矩陣下標引用

1、訪問單個元素可用a(i,j)

2、線性引用元素

ø  對於矩陣a,線性引用元素的格式為a(k)。通常這樣的引用用於行向量或列向量,但也可用於二維矩陣。

ø  matlab按列優先排列的乙個長列向量格 式(線性引用元素)來儲存矩陣元素。

例如:a=zeros(3);那麼a(3,2)就是對應位置從(1,1)豎著編號的號碼k,a(k)

3、訪問多個元素

操作符「:」可以用來表示矩陣的多個元素。若a是二維矩陣,其主要用法如下:

ø  a(:,:) 返回矩陣a的所有元素。

ø  a(i,:) 返回矩陣a第i行的所有元素。

ø  a(i,k1:k2) 返回矩陣a第i行的自k1到k2列的所有元素。

ø  a(:,j) 返回矩陣a第j列的所有元素。

ø  a(k1:k2,j) 返回矩陣a第j列的自k1到k2行的所有元素。

若a是多維矩陣,也可以通過類似的方法實現對其訪問。

>_<:矩陣資訊的獲取

1、矩陣尺寸資訊

ø size(x)或size(x,dim)返回各個方向的長度,以向量的方式儲存;後乙個是返回指定方向的長度

ø length(x)返回各個方向中最長長度

ø ndims(a)矩陣的維數

ø numel(a)矩陣的元素個數

2、元素的資料型別[is---略]

3、矩陣的資料結構[is---略]

4、矩陣結構的改變

ø reshape(a,m,n)把a重新排列為mxn的矩陣[按照長列向量的順序重排元素]

ø rot90(a)或rot90(a,k)逆時針旋轉矩陣900或k*900

ø fliplr(a)以豎直方向為軸做映象

ø filpud(a)以水平方向為軸做映象

ø flipdim(a,dim)以指定軸做映象[1水平、2豎直]

ø transpose(a)矩陣的轉秩相當於b=a.'

ø ctranspose(a)矩陣的共軛轉秩相當於b=a'

>_<:稀疏矩陣

ø  在matlab中,可以用滿矩陣儲存方式和稀疏矩陣儲存方式來儲存矩陣。

ø  若乙個矩陣只有少數的元素非零,稱為稀疏矩陣。稀疏矩陣非零元素及其對應的下標來表示。

ø  使用者可以建立雙精度、複數和邏輯等型別的稀疏矩陣。

1、稀疏矩陣的建立

ø  在matlab中,用函式sparse()實現滿矩陣到稀疏矩陣的轉換。

ø  在matlab中用函式full()實現稀疏矩陣到滿矩陣的轉換。

ø  在matlab中,還可以用函式sparse()直接建立稀疏矩陣,其具體用法如下。

s = sparse(i,j,s,m,n),其中,i和j分別是稀疏矩陣非零元素的行和列下標,s為相應的非零元素的值,m和n分別是矩陣的行數和列數。

ø  matlab還提供一些函式用於建立特殊稀疏矩陣,這些函式如下表所示。

speye(n)建立單位稀疏矩陣

spones(s)將稀疏矩陣的非0元素的值改為1

sprand(s)或sprand(m,n,density)將稀疏矩陣s的非0元素的值改為均勻分布的隨機數或建立mxn的隨機稀疏矩陣

sprandn(s)或sprandn(m,n,density)將稀疏矩陣s的非0元素的值改為高斯分布的隨機數

2、檢視稀疏矩陣

matlab提供一些函式用於檢視稀疏矩陣的資訊,如下表所示:

ø nnz(x)返回非零值個數

ø nonzeros(a)返回非0值

ø nzmax(s)返回用於儲存非零值的空間長度

[matlab自帶的稀疏矩陣矩陣west0479:匯入load west0479 可以用spy(west0479)圖形化顯示稀疏矩陣非零值分布

3、稀疏矩陣的運算規則

在matlab中的各種命令和函式都可以用於稀疏矩陣的運算,並且遵循如下的一些約定。

ø 把矩陣變為標量或者定長向量的函式總是給出滿矩陣;

ø 對於標量或者定長向量變換到矩陣的函 數,如函式zeros()、ones()、eye()、rand()等總是給出滿矩陣;

ø 從矩陣到矩陣的變換函式將以原矩陣的形式出現;

ø 在參與矩陣擴充套件的子矩陣(如[ a b;c d])中,只要有乙個是稀疏矩陣,那麼所得的結果也是稀疏矩陣;

ø 在矩陣引用中,將仍以原矩陣形式給出結果。

matlab矩陣的操作

l 矩陣的輸入 i.直接輸入建立矩陣 輸入方法是先鍵入左方括弧 然後按行直接鍵入矩陣的所有元素,最後鍵入右方括弧 注意 整個矩陣以 和 作為首尾,同行的元素用 或空格隔開,不同行的元素用 或按enter鍵來分隔 矩陣的元素可以為數字也可以為表示式,如果進行的是數值計算,表示式中不可包含未知的變數。例...

MATLAB 矩陣操作(三)

特殊向量和特殊矩陣 1 特殊向量 t 0 0.1 10 產生從 0 到 10 的行向量,元素之間間隔為 0.1 t linspace n1,n2,n 產生 n1 和 n2 之間線性均勻分布的 n 個數 預設 n 時,產生 100 個數 t logspace n1,n2,n 預設 n 時,產生 50 ...

MatLab矩陣操作一

矩陣的建立 直接輸入元素 a 1,2,3 b 1 2 3 4 5 6 c 1 3 6 2 4 8 零矩陣 a zeros a為單元素矩陣 b zeros 4 b為4 4矩陣 c zeros 2,3 1矩陣 ones 冒號表示式建立行向量 1行n列矩陣 e1 e2 e3 e1起始值 e2步長 e3結尾...