matlab數組與矩陣
阿新 • • 發佈:2018-08-08
沒有 變量的存儲 ica 矩陣 pos pty 狀態 例如 哪些 ××××××××××××××××××××××××××
數組與矩陣
××××××××××××××××××××××××××
得到關於數組與矩陣的信息:
isempty() : 為空,即為[] isscalar() : 為標量,即為單一的一個數字 isvector() : 為向量,即為數組或者矩陣 isrow() : 為行向量 iscolumn() : 為列向量 issparse() : 為稀疏矩陣 size() : 返回數組或者矩陣的行列大小 , 返回為 [ rowline_number , columnline_number ] length() : 返回數組或者矩陣中行或者列中長度最大的一個 ndims() : 返回數組或者矩陣的維度 使用命令who 可以查看有哪些變量 使用命令whos 可以查看變量的存儲狀態
創立數組與矩陣:
A_matrix = [ 1:3 ; 2:4 ; 3:5 ]
******** 顯示結果 ********
a =
1 2 3
2 3 4
3 4 5
*******************************
其中 1:3 稱為分片,默認步長為1 , 由 1 遞增加步長 1 直到 3 為止 。
那麽 1 : 2 : 9 所得即為 [ 1 3 5 7 9 ] ,步長為 2 , 增長到 9 。 (當然步長可以為負數)
矩陣的運算:
普通的運算符號也可以直接用於矩陣與數組之間 , 例如 + - * / \ 其中 / 為左除 , \ 為右除 。 A_matrix / B_matrix 等同於 B_matrix \ A_matrix 但運算符號 ^ 與 .^ 存在區別: A_matrix ^ 2 等同於 A_matrix * A_matrix A_matrix .^2 等同於 矩陣中的每一個元素改為自身的平方 。 ****************************************************** >> a.^2 ans = 1 4 9 4 9 16 9 16 25 *******************************************************
矩陣的轉置,求逆與點乘:
轉置: 使用符號 ‘ 或者 .‘ 或者使用函數 transpose(matrix)
A 為矩陣 , 那麽A的轉置即為 A‘ A.‘ transpose(A)
但 ‘ 並非為真正的轉置,因為當矩陣成員中存在虛數時,轉置後的結果中虛數會變為
原虛數的共軛虛數,例如:
*******************************************************************
>> a = [ 1+1j 2 ; 2+3j 5 ]
a =
1.0000 + 1.0000i 2.0000 + 0.0000i
2.0000 + 3.0000i 5.0000 + 0.0000i
>> a‘
ans =
1.0000 - 1.0000i 2.0000 - 3.0000i
2.0000 + 0.0000i 5.0000 + 0.0000i
>> a.‘
ans =
1.0000 + 1.0000i 2.0000 + 3.0000i
2.0000 + 0.0000i 5.0000 + 0.0000i
*********************************************************************
求逆: 直接使用inv函數,inv(matrix)即可得到相應矩陣的逆矩陣
點乘: 使用函數dot( A_matrix , B_matrix ) 完成矩陣A與矩陣B的點乘
修改數組與矩陣的部分值:
**********************************************************************************************
>> A = [ 11 10 9 34 837 ] % 建立數組 A
A =
11 10 9 34 837
>> C = ( A < 33 ) % 查找符合要求的元素,返回為邏輯類型
C =
1 1 1 0 0
>> whos
Name Size Bytes Class Attributes
A 1x5 40 double
C 1x5 5 logical
>> A(C) = 32 % 通過數組C修改相應的符合 < 33 條件的元素的值
A =
32 32 32 34 837
**********************************************************************************************
當然也可以通過find函數來進行相同的操作
A( find( A < 33 ) ) = 32 % 只是對於find函數而言,返回的數據是符合要求的元素的index索引號
矩陣的翻轉與排序操作:
對於排序而言,可以使用sort函數進行排序 sort( X , DIM , MODE )
X: 為數組或者矩陣 DIM: dimension維度 mode:‘ascend‘正序 ‘descend‘ 反序
默認對列排序,維度為 1 , 模式為‘ascend‘正序
***********************************************************
>> a = [ 3:5 ; 1:3 ; 4:6 ]
a =
3 4 5
1 2 3
4 5 6
>> sort(a)
ans =
1 2 3
3 4 5
4 5 6
***********************************************************
對於數組與矩陣的翻轉可以使用的函數有
rot90( matrix , k ) 矩陣逆時鐘旋轉 k*90 度 [ rotate 90 degree ]
fliplr(A) 矩陣左右旋轉 [ flip left , flip right ]
flipud(A) 矩陣上下旋轉 [ flip up , flip down ]
**************************************************************
>> a = [ 1:9 ; 2:10 ]
a =
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
>> flipud(a)
ans =
2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9
>> a % 調用函數並沒有改變 矩陣 a
a =
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
>> fliplr(a)
ans =
9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2
a =
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
>> rot90(a,1)
ans =
9 10
8 9
7 8
6 7
5 6
4 5
3 4
2 3
1 2
**************************************************************
對矩陣的求和操作:
(1) 使用函數sum函數對矩陣求和
sum( A_matrix , Dim ) Dim :維度默認為 1 , 即默認為列求和
對一個矩陣使用sum兩次即得到矩陣每個元素的和
****************************************************
>> a
a =
1.0000 + 1.0000i 2.0000 + 0.0000i
2.0000 + 3.0000i 5.0000 + 0.0000i
>> sum(a)
ans =
3.0000 + 4.0000i 7.0000 + 0.0000i
>> sum(a,2)
ans =
3.0000 + 1.0000i
7.0000 + 3.0000i
>> sum(sum(a))
ans =
10.0000 + 4.0000i
*****************************************************
(2) 使用累加函數cumsum , 對矩陣進行累加
cumsum(A,DIM) DIM 默認為 1 , 對列進行操作
若 matrix A 為 [
a1 a2 a3 ;
b1 b2 b3 ;
c1 c2 c3
]
那麽對A使用cumsum函數後,結果為
[
a1 a2 a3 ;
a1+b1 a2+b2 a3+b3 ;
a1+b1+c1 a2+b2+c2 a3+b3+c3
]
*****************************************************
>> a
a =
1.0000 + 1.0000i 2.0000 + 0.0000i
2.0000 + 3.0000i 5.0000 + 0.0000i
0.0000 + 5.0000i 6.0000 + 8.0000i
>> cumsum(a)
ans =
1.0000 + 1.0000i 2.0000 + 0.0000i
3.0000 + 4.0000i 7.0000 + 0.0000i
3.0000 + 9.0000i 13.0000 + 8.0000i
*****************************************************
通過原矩陣構造新的矩陣:
(1) 以已有的矩陣為基本元素來構造新的矩陣,使用repmat函數:
**************************************************************
>> a = [ 1:3 ; 2:4 ]
a =
1 2 3
2 3 4
>> repmat(a,2,3)
% 以矩陣 a 為基本的元素構造矩陣
% [ a a a ; a a a ]
ans =
1 2 3 1 2 3 1 2 3
2 3 4 2 3 4 2 3 4
1 2 3 1 2 3 1 2 3
2 3 4 2 3 4 2 3 4
**************************************************************
(2) 以已有矩陣作為對角塊建立新的矩陣,使用blkdiag函數:
**************************************************************
>> blkdiag(a,a)
ans =
1 2 3 0 0 0
2 3 4 0 0 0
0 0 0 1 2 3
0 0 0 2 3 4
>> blkdiag(a,a,a)
ans =
1 2 3 0 0 0 0 0 0
2 3 4 0 0 0 0 0 0
0 0 0 1 2 3 0 0 0
0 0 0 2 3 4 0 0 0
0 0 0 0 0 0 1 2 3
0 0 0 0 0 0 2 3 4
**************************************************************
(3) 矩陣形狀修改,使用函數reshape,但是原矩陣的元素個數不變:
**************************************************************
>> size(a)
ans =
2 3
>> a
a =
1 2 3
2 3 4
>> reshape(a,3,2)
ans =
1 3
2 3
2 4
**************************************************************
matlab數組與矩陣