>_<:矩陣構造
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、刪除矩陣的某一行或者是某一列:只需將該行或者該列賦予一個空矩陣[]即可: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元素的值改為高斯分布的隨機數
Ø 從矩陣到矩陣的變換函數將以原矩陣的形式出現;
Ø 在參與矩陣擴展的子矩陣(如[ A B;C D])中,只要有一個是稀疏矩陣,那么所得的結果也是稀疏矩陣;
2、查看稀疏矩陣
MATLAB提供一些函數用於查看稀疏矩陣的信息,如下表所示:
Ø nnz(X)返回非零值個數 Ø nonzeros(A)返回非0值 Ø nzmax(S)返回用於存儲非零值的空間長度
[matlab自帶的稀疏矩陣矩陣west0479:導入load west0479 可以用spy(west0479)圖形化顯示稀疏矩陣非零值分布
3、稀疏矩陣的運算規則
在MATLAB中的各種命令和函數都可以用於稀疏矩陣的運算,並且遵循如下的一些約定。
Ø 把矩陣變為標量或者定長向量的函數總是給出滿矩陣; Ø 對於標量或者定長向量變換到矩陣的函 數,如函數zeros()、ones()、eye()、rand()等總是給出滿矩陣;
Ø 在矩陣引用中,將仍以原矩陣形式給出結果。