Создать нижнюю треугольную матрицу из заданного вектора - PullRequest
3 голосов
/ 12 февраля 2012

Моя проблема заключается в следующем: у меня есть вектор как

[3,4,5,6,7]

Я хочу создать матрицу как

3 0 0 0 0   
3 4 0 0 0   
3 4 5 0 0   
3 4 5 6 0   
3 4 5 6 7 

Однако я не хочу использовать циклы из-за проблемы размера, которую я в конечном итоге получу. Я думал об использовании функций flipud, fliprl, hankel и toeplitz, но не могу найти решение.

Ответы [ 2 ]

6 голосов
/ 12 февраля 2012

Попробуйте это:

x = [3,4,5,6,7]
tril(ones(length(x),1)*x)

ans =

 3     0     0     0     0
 3     4     0     0     0
 3     4     5     0     0
 3     4     5     6     0
 3     4     5     6     7
1 голос
/ 12 февраля 2012

Если A - ваш вектор, вы можете сделать

M = repmat (A, длина (A), 1). * Tril (единицы (длина (A), длина (A)), 0)

...