Octave的奇妙功能之一是它如何處理稀疏矩陣。我已經(jīng)完成了將一些Octave代碼復(fù)制到fortran中的任務(wù)(速度至關(guān)重要),具體來說,鑒于稀疏矩陣Sparse(節(jié)點,節(jié)點),我需要提出子矩陣SubSparse(afew,afew):r=4;c=6;k=5;nz=r*k;Sparse=spalloc(r,c,nz);Sparse(1,1)=1;Sparse(1,2)=2;Sparse(3,5)=4;Sparse(4,6)=6;SubSparse=Sparse([1,4],[1,6])完整的矩陣為:Sparse1.000 2.000 0.000 0.000 0.000 0.0000.000 0.000 0.000 0.000 0.000 0.0000.000 0.000 0.000 0.000 4.000 0.0000.000 0.000 0.000 0.000 0.000 6.000SubSparse1.000 0.0000.000 6.000我已經(jīng)讀過了,這個我不能做的一件事是重新創(chuàng)建完整的矩陣,因為它們太大而無法放入機器中。在稀疏矩陣的fortran實現(xiàn)中,我使用Hartwell-Boeing存儲,這是由我對SuperLU求解線性系統(tǒng)的要求所決定的。我相信八度的壓縮列格式非常相似。我的問題是,在哪里可以找到(a)執(zhí)行MWE的第4行時發(fā)生的邏輯,以及(b)代碼
1 回答

揚帆大魚
TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊
您正在索引一個稀疏矩陣,因此需要查看Sparse類,它是C ++中l(wèi)iboctave的一部分。您似乎正在尋找的方法是Sparse<T> Sparse<T>::index (const idx_vector& idx_i, const idx_vector& idx_j, bool resize_ok)
。
如果您打算在另一個程序上使用該實現(xiàn),請注意該代碼的許可證,即GPLv3 +。
添加回答
舉報
0/150
提交
取消