У меня есть простая матрица: [3 5 9 10]. Как я могу преобразовать это в: [3 0 ; 5 3 ; 9 5 ; 10 9]
[3 5 9 10]
[3 0 ; 5 3 ; 9 5 ; 10 9]
Я пытался использовать hankel и т. Д., Но это не сработало. Это должна быть векторная операция (без цикла for / while). Спасибо!
Вы были близки. Вы действительно хотите использовать функцию TOEPLITZ вместо:
>> vec = [3 5 9 10]; >> toeplitz(vec,[vec(1) 0]) ans = 3 0 5 3 9 5 10 9
Однако, поскольку в вашей матрице только 2 столбца, это намного проще:
[vec; 0 vec(1:end-1)].'
a = 1:4; b = repmat(a',1,2); b(:,2) = b(:,2)-1;