2011-04-06 121 views
2

我有一个简单的矩阵:[3 5 9 10]。我如何将它转换为: [3 0 ; 5 3 ; 9 5 ; 10 9]MATLAB中的矩阵操作

我试过使用hankel等,但没有奏效。这需要是一个向量操作(no for/while循环)。谢谢!

回答

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)].' 
+0

感谢Kenneth(再次)! – Maddy 2011-04-06 19:11:33

1
a = 1:4; 

b = repmat(a',1,2); 
b(:,2) = b(:,2)-1; 
+0

感谢eykanal!但我的问题并不清楚..你的回答对我的初始问题是正确的。 – Maddy 2011-04-06 19:10:58