У меня есть вектор, где каждому значению соответствует диагональ.Я хочу создать матрицу из этого вектора.У меня есть код:
x = [1:5];
N = numel(x);
diagM = diag(repmat(x(1),N,1),0);
for iD = 2:N
d = repmat(x(iD),N-iD+1,1);
d_pos = diag(d,iD-1);
d_neg = diag(d,-iD+1);
d_join = d_pos+d_neg;
diagM = diagM+d_join;
end
Это дает мне то, что я хочу:
diagM =
1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1
Но это стало очень медленно, например для x=[1:10^4]
.
Не могли бы вы помочь мне с другим более быстрым способом создания такой последовательности?