Вы также можете использовать spdiags
также для создания этой матрицы:
n = 5;
v = ones(n,1);
d = full(spdiags([v v], [-1 0], n, n));
Получаем:
>> d
d =
1 0 0 0 0
1 1 0 0 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1
Первые две строки определяют требуемый размер матрицы, предполагая, что квадрат n x n
, а также как вектор всех тех, что имеет длину n x 1
. Затем мы вызываем spdiags
, чтобы определить, где по диагонали этой матрицы этот вектор будет заселен. Мы хотим определить основную диагональ, чтобы иметь все, а также диагональ слева от главной диагонали, или -1
вдали от основной диагонали. spdiags
отрегулирует общее количество элементов для диагонали вдали от основного для компенсации.
Мы также гарантируем, что выход имеет размер n x n
, но эта матрица фактически sparse
. . Нам нужно преобразовать матрицу full
завершить результат,
Использование [ 'diag'] (http://www.mathworks.com/ help/matlab/ref/diag.html) дважды, добавьте их вместе. – excaza
Всегда только две диагонали '1' s? – Dan
@ Дана да всегда с одними – efirvida