我想重複一個長度爲n
的矢量A
在對角線上m
次,以獲得(n+m-1) x m
矩陣B
。舉個例子,比如說A = [a;b;c;d]
,m = 4
。這應該會導致如何在Matlab中沿對角線重複一個矢量
B =
[a 0 0 0;
b a 0 0;
c b a 0;
d c b a;
0 d c b;
0 0 d c;
0 0 0 d]
有關快速實現此目的的任何建議? blkdiag(repmat(A,1,m))
在這種情況下不會幫助我,因爲它會創建一個(n*m) x m
矩陣。
最終我其實在第三矩陣C
的矩陣產品D
與B
只是感興趣:
D=C*B
如果你看到另一個選項獲取D
無需生成B
,我將不勝感激。但是對於上述問題的解決方案也會讓我感到非常高興!順便說一句,n
和m
會很大。
謝謝!
這看起來像一個換位託普利茨矩陣。我相信matlab有一個生成toeplitz矩陣的函數。這可能對你有用。 – mathematician1975
@julian我的方法適合你嗎?如果m和n是高值,它可以節省創建矩陣'B'的時間,並且將所有的零乘以那裏......我只是真誠地知道它是否工作... – Adiel