如何组合两个矩阵

时间:2013-12-30 16:03:02

标签: matlab matrix

我有两个矩阵 -

A=[1;0.5;0.67;0.72;0.88;0.9]; %// which is 6 X 1, matrix

B=[0.951  0.736  0.437  0.176   0.036;   %// which is 5 X 5, matrix
     0    0.077  0.069  0.037   0.009;
     0    0      0.439  0.531   0.365; 
     0    0          0  0.154   0.210;
     0    0          0      0   0.310]

我想组合这两个矩阵并制作[6 x 6]矩阵,如下所示 -

C= [1  0.951  0.736  0.437  0.176   0.036;   %//which is 6 X 6, matrix
    0   0.5   0.077  0.069  0.037   0.009;
    0     0   0.67   0.439  0.531   0.365; 
    0     0     0    0.72   0.154   0.210;
    0     0     0       0   0.88    0.310;
    0     0     0       0      0    0.9  ]

为此,我已将B初始化为B(6,6)=0,但我无法将这两者合并。

Matlab专家,需要您宝贵的建议和帮助。

4 个答案:

答案 0 :(得分:1)

这是我能想到的最简单的方法:

C = zeros(6,6);
C(1:end-1,2:end) = B;
C(eye(6)>0) = A

答案 1 :(得分:1)

一种解决方案可能是:

B(end+1,end+1) = 0;
C = diag(A) + circshift(B,[0 1]);

返回:

C =

    1.0000    0.9510    0.7360    0.4370    0.1760    0.0360
         0    0.5000    0.0770    0.0690    0.0370    0.0090
         0         0    0.6700    0.4390    0.5310    0.3650
         0         0         0    0.7200    0.1540    0.2100
         0         0         0         0    0.8800    0.3100
         0         0         0         0         0    0.9000

答案 2 :(得分:1)

在一行中:

C = [zeros(size(B,1),1) B; zeros(1,size(B,2)+1)] + diag(A);

这可以通过在一行和一列中扩展B,然后添加对角线来实现。

答案 3 :(得分:0)

另一种可能的解决方案是使用spdiags

full(spdiags([A, [zeros(1, 5); spdiags(B)]], 0:5, 6, 6))

可以概括为:

full(spdiags([A,[zeros(1,size(B,2));spdiags(B)]],0:size(B,1),numel(A),numel(A)))