Матричные манипуляции в MATLAB - PullRequest
2 голосов
/ 06 апреля 2011

У меня есть простая матрица: [3 5 9 10]. Как я могу преобразовать это в: [3 0 ; 5 3 ; 9 5 ; 10 9]

Я пытался использовать hankel и т. Д., Но это не сработало. Это должна быть векторная операция (без цикла for / while). Спасибо!

Ответы [ 2 ]

4 голосов
/ 06 апреля 2011

Вы были близки. Вы действительно хотите использовать функцию 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)].'
1 голос
/ 06 апреля 2011
a = 1:4;

b = repmat(a',1,2);
b(:,2) = b(:,2)-1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...