[matlab] 矩陣操做

 

 

>_<:矩陣構造數據結構

1.簡單矩陣構造函數

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

2.特殊矩陣構造ip

在MATLAB中還提供一些函數用來構造特殊矩陣,這些函數以下表所示。it

(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爲對角塊的矩陣
 
 
>_<:矩陣行列的刪除
     
一、刪除矩陣的某一行或者是某一列:只需將該行或者該列賦予一個空矩陣[]便可:A(2,:)=[]第二行爲空
 
 
>_<:矩陣下標引用
一、訪問單個元素可用A(i,j)
二、線性引用元素
  Ø  對於矩陣A,線性引用元素的格式爲A(k)。一般這樣的引用用於行向量或列向量,但也可用於二維矩陣。
  Ø  MATLAB按列優先排列的一個長列向量格 式(線性引用元素)來存儲矩陣元素。
  例如:A=zeros(3);那麼A(3,2)就是對應位置從(1,1)豎着編號的號碼k,A(k)
三、訪問多個元素

  操做符「:」能夠用來表示矩陣的多個元素。若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是多維矩陣,也能夠經過相似的方法實現對其訪問。

 

>_<:矩陣信息的獲取

一、矩陣尺寸信息

  Ø size(X)或size(X,dim)返回各個方向的長度,以向量的方式存儲;後一個是返回指定方向的長度
  Ø length(x)返回各個方向中最長長度
  Ø ndims(A)矩陣的維數
  Ø numel(A)矩陣的元素個數

二、元素的數據類型[is---略]

三、矩陣的數據結構[is---略]

四、矩陣結構的改變

  Ø 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中,能夠用滿矩陣存儲方式和稀疏矩陣存儲方式來存儲矩陣。
Ø  若一個矩陣只有少數的元素非零,稱爲稀疏矩陣。稀疏矩陣非零元素及其對應的下標來表示。
Ø  用戶能夠建立雙精度、複數和邏輯等類型的稀疏矩陣。
 
一、稀疏矩陣的建立
  Ø  在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元素的值改成高斯分佈的隨機數

二、查看稀疏矩陣

MATLAB提供一些函數用於查看稀疏矩陣的信息,以下表所示:

  Ø nnz(X)返回非零值個數
  Ø nonzeros(A)返回非0值
  Ø nzmax(S)返回用於存儲非零值的空間長度

 

[matlab自帶的稀疏矩陣矩陣west0479:導入load west0479 能夠用spy(west0479)圖形化顯示稀疏矩陣非零值分佈

 

三、稀疏矩陣的運算規則

在MATLAB中的各類命令和函數均可以用於稀疏矩陣的運算,而且遵循以下的一些約定。

  Ø 把矩陣變爲標量或者定長向量的函數老是給出滿矩陣;
  Ø 對於標量或者定長向量變換到矩陣的函 數,如函數zeros()、ones()、eye()、rand()等老是給出滿矩陣;
  Ø 從矩陣到矩陣的變換函數將以原矩陣的形式出現;
  Ø 在參與矩陣擴展的子矩陣(如[ A B;C D])中,只要有一個是稀疏矩陣,那麼所得的結果也是稀疏矩陣;
  Ø 在矩陣引用中,將仍以原矩陣形式給出結果。
相關文章
相關標籤/搜索