2011-04-06 123 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