在矩阵中插入一行和一行

时间:2017-06-11 07:40:56

标签: matlab matrix

我通过以下方式从矩阵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

有更聪明的方法吗?

1 个答案:

答案 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;