>_<:矩陣構造
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])中,隻要有一個是稀疏矩陣,那麼所得的結果也是稀疏矩陣;
Ø 在矩陣引用中,将仍以原矩陣形式給出結果。
本文轉自beautifulzzzz部落格園部落格,原文連結:http://www.cnblogs.com/zjutlitao/p/3668132.html,如需轉載請自行聯系原作者