我有一个简单的矩阵:[3 5 9 10]
。我怎样才能将其转换为:
[3 0 ; 5 3 ; 9 5 ; 10 9]
我尝试过使用hankel等但是没有用。这需要是一个向量运算(对于/ while循环没有)。谢谢!
答案 0 :(得分:4)
你很亲密。您实际上想要使用函数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 :(得分:1)
a = 1:4;
b = repmat(a',1,2);
b(:,2) = b(:,2)-1;