>_<:矩陣構造
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結尾...