我通过以下方式从矩阵b
创建矩阵a
:
a=[1 2 ; 3 4];
b= [a zeros(2); zeros(2) a]
b =
1 2 0 0
3 4 0 0
0 0 1 2
0 0 3 4
接下来,我想在矩阵的某个点插入一行和一列零。让我们说中途:
idx=2;
c=[b(1:idx,:); zeros(1,4); b(idx+1:end,:)]
c =
1 2 0 0
3 4 0 0
0 0 0 0
0 0 1 2
0 0 3 4
c=[c(:,1:idx) zeros(5,1) c(:,idx+1:end)]
c =
1 2 0 0 0
3 4 0 0 0
0 0 0 0 0
0 0 0 1 2
0 0 0 3 4
有更聪明的方法吗?
答案 0 :(得分:2)
这是另一种方式(我不知道它是否更智能)。
假设您的行索引为row
,列索引为col
:
sc = size(b) + 1;
c = zeros(sc);
ROW = true(sc(1), 1);
ROW(row) = false;
COL = true(1, sc(2));
COL(col) = false;
然后在MATLAB r2016b / Octave中你可以写
c(ROW & COL)=b;
在2016b之前,您可以使用bsxfun
c(bsxfun(@and, ROW , COL))=b;