我正在解決一個線性系統,其中的矩陣是塊三對角線。設B是99×99三對角矩陣,主對角線上有4個矩陣,兩個子對角線上有-1個矩陣,讓我成爲99乘99的單位矩陣。我想存儲99^2大小爲99^2的塊三對角矩陣A,其主對角線爲B,子對角線爲-I。什麼是最有效的方法來做到這一點?我想出了一種方法:如何在MATLAB中有效地存儲塊三對角矩陣?
t1=ones(99,1);
t2=ones(98,1);
B=4*diag(t1)-diag(t2,-1)-diag(t2,1);
I=diag(t1);
Bp=repmat({B}, 99, 1);
M = blkdiag(Bp{:});
t3=ones(9702,1);
I=zeros(9801)-diag(t3,-99)-diag(t3,99);
A=M+I;
我不確定這是否是最有效的方法來做到這一點。任何其他可能的方法呢?
商店作爲一個稀疏矩陣https://uk.mathworks.com/help/ matlab/ref/sparse.html(如果你有足夠新的版本) – Richard
@Richard「在R2006a之前推出」 - 沒有足夠的新版本的危險,我認爲。 – beaker
@Richard稀疏矩陣在MATLAB大約版本7.0(2004年左右)中引入。這個舊版本的MATLAB不能在當前大多數操作系統上運行,因此可以肯定地說,任何當前的MATLAB用戶都將擁有7.0以上的版本。 – rayryeng