串接指令之應用
MATLAB Catenation Commands
串接兩矩陣,構成新矩陣之指令如下表:
函數名稱 | 說明 |
cat | 沿設定方向串接 |
horzcat | 沿水平方向串接 |
vertcat | 沿垂直方向串接 |
repmat | 依垂直與水平方向倍數串接 |
blkdiag | 由現存之矩陣產生對角矩陣 |
下面為執行這些函數指令之例子:
串接矩陣與陣列
除使用中括號[]作簡單串接外,其他串接指令有cat、horzcat及vertcat等三個函數。這些指令可以交互運用,例如要將AB兩矩陣作垂向串接時,下述三個指令均可得到同樣的結果:
水平串接:
C = [A B] %使用中括號,相隔用分號。
C = cat(2, A, B); % 第一參數設定為2。
C = horzcat(A, B); % 無額外參數。
垂直串接:
C = [A; B] %使用中括號,相隔用分號。
C = cat(1, A, B); % 第一參數設定為1。
C = vertcat(A, B); % 無額外參數。
拷貝串接
使用repmat函數在垂向及水平方向產生不同數量之拷貝矩陣,其指令型式如下:
repmat(M, v, h)
MATLAB 將輸入矩陣垂直方向拷貝v 次;水平方向拷貝h次。下面舉例:
A = [8 1 6; 3 5 7; 4 9 2]
A =
8 1 6
3 5 7
4 9 2
B = repmat(A, 2, 4)
B =
8 1 6 8 1 6 8 1 6 8 1 6
3 5 7 3 5 7 3 5 7 3 5 7
4 9 2 4 9 2 4 9 2 4 9 2
8 1 6 8 1 6 8 1 6 8 1 6
3 5 7 3 5 7 3 5 7 3 5 7
4 9 2 4 9 2 4 9 2 4 9 2
區塊對角矩陣
利用blkdiag函數可以結合矩陣,鉗入對角方向,產生許多區塊對角矩陣,在區塊之外的新建元素位置則設定為零:
A = magic(3);
B = [-5 -6 -9; -4 -4 -2];
C = eye(2) * 8;
D = blkdiag(A, B, C)
D =
8 1 6 0 0 0 0 0
3 5 7 0 0 0 0 0
4 9 2 0 0 0 0 0
0 0 0 -5 -6 -9 0 0
0 0 0 -4 -4 -2 0 0
0 0 0 0 0 0 8 0
0 0 0 0 0 0 0 8
沒有留言:
張貼留言