Ввод диагонали в матрицу размера mxn

Я пытаюсь построить матрицу оператора 2-го порядка в matlab для матрицы mxn (n-2) xn более точно.

Я посмотрел diag, но он дает только квадратную матрицу. Просто интересно найти идеи.

Опять же, чтобы повторить,

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

вернет -2 на главной диагонали, но матрица mxn не имеет главной диагонали.


person alvarezcl    schedule 07.02.2014    source источник
comment
Не могли бы вы предоставить пример вывода, пожалуйста   -  person Dan    schedule 07.02.2014
comment
Вы можете просто заполнить квадратную матрицу: padarray(D, [0 2], 0, 'post')   -  person Superbest    schedule 07.02.2014


Ответы (1)


Вы ищете 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
person chappjc    schedule 07.02.2014