【发布时间】:2015-05-15 17:14:54
【问题描述】:
我有一个具有某些值的 (2n-1)×1 向量,我想获得一个对角线使用相同值填充的 n-n 矩阵。
例如。如果我有
a = [1; 2; 3; 4; 5];
我要获得
A = [[3 4 5];[2 3 4];[1 2 3]]
= 3 4 5
2 3 4
1 2 3
我的矩阵尺寸要大得多,所以我希望它尽可能高效。我已经找到了以下解决方案:
n = 3;
A = toeplitz(a);
A = A(1:n,end-n+1:end)
和
A = a(n)*eye(n);
for j=1:n-1
A(1+j:n+1:end-j*n) = a(n-j);
A(j*n+1:n+1:end) = a(n+j);
end
我想知道是否有更有效的方法来获得这个结果,记住我正在处理巨大的矩阵并且真的需要速度。
【问题讨论】:
-
A = toeplitz( a(n:-1:1),a(n:end) );的表现如何?
标签: matlab matrix variable-assignment vectorization diagonal