Вектор должен выглядеть примерно так:
[1 2 3 0 0 0 0 1 2 3 0 0 0 0 1 2 3 0 0 0 0 1 2 3];
Я знаю вектор ([1 2 3]), который я хочу «вставить» по диагонали, но я не знаю размер массива, поэтому число строк должно быть определено переменной N.
Это немного грубо, но можно построить желаемую матрицу как теплица:
a = [1 2 3]; toeplitz([a(1); zeros(length(a),1)],[a(:); zeros(length(a),1)])
с ответом:
ans = 1 2 3 0 0 0 0 1 2 3 0 0 0 0 1 2 3 0 0 0 0 1 2 3
Вы также можете использовать 2D-свертку:
v = [1 2 3]; N = 4; result = conv2(v, eye(N))
Вы можете использовать spdiags, чтобы установить диагонали и получить желаемую форму:
spdiags
n = 4; A = full(spdiags(ones(n,1)*[1,2,3],[0,1,2],n,n+2));
Возвращает:
A = 1 2 3 0 0 0 0 1 2 3 0 0 0 0 1 2 3 0 0 0 0 1 2 3