我有两个矩阵 -
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专家,需要您宝贵的建议和帮助。
答案 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)))