将对角线放在mxn矩阵中

时间:2014-02-07 07:05:58

标签: matlab matrix initialization diagonal

我正在尝试在matlab中为mxn矩阵(n-2)xn构造二阶运算符矩阵。

我查了一下diag,但它只是一个方阵。只是想知道想法。

再次重申,

D = diag(-2*ones(1,n-1),0)

将在主对角线上返回-2,但mxn矩阵没有主对角线。

1 个答案:

答案 0 :(得分:2)

您正在寻找spdiags

>> n = 6; m = n-2;
>> D = full(spdiags(-2*ones(m,1),0,m,n))
D =
    -2     0     0     0     0     0
     0    -2     0     0     0     0
     0     0    -2     0     0     0
     0     0     0    -2     0     0

或者只使用eye

D = -2*eye(m,n)

也许您想要组合几个对角线:

>> B = [ones(m,1) -2*ones(m,1) ones(m,1)];
>> D = full(spdiags(B,0:2,n-2,n))
D =
     1    -2     1     0     0     0
     0     1    -2     1     0     0
     0     0     1    -2     1     0
     0     0     0     1    -2     1