我在MATLAB(版本7)中有一個30000x14000稀疏矩陣,我需要在另一個程序中使用它。調用保存不會將其寫爲ASCII(不支持)。在此怪物上調用full()
會導致Out of Memory
錯誤。
如何導出?如何將一個非常大的MATLAB稀疏矩陣保存到文本文件中?
回答
我在MATLAB中使用Java將它保存爲文本。 MATLAB代碼:
pw=java.io.PrintWriter(java.io.FileWriter('c:\\retail.txt'));
line=num2str(0:size(data,2)-1);
pw.println(line);
for index=1:length(data)
disp(index);
line=num2str(full(data(index,:)));
pw.println(line);
end
pw.flush();
pw.close();
這裏data
是一個非常大的稀疏矩陣。
你試過分區嗎?
我的意思是嘗試在1000個第一行(或5000)上調用full(),然後重複該過程(如果它工作的話)。
是總是那一個選項,它可能會花費很多時間來寫作ascii塊並將它們稍後合併 – Midhat 2008-10-20 09:35:56
將稀疏矩陣保存爲.mat
文件。然後,在另一個程序中,使用合適的庫來讀取.mat
文件。
例如,如果其他程序是用Python編寫的,則可以使用支持稀疏數組的scipy.io.mio.loadmat
函數,併爲您提供稀疏numpy矩陣。
其他程序是rapidminer – Midhat 2008-10-20 09:35:14
使用find
功能得到非零元素的索引...
idcs = find(data);
vals = data(idcs);
...save the index vector and value vector in whatever format you want...
如果你願意,你可以使用ind2sub
轉換的線性指標,以行,列標。
如果您需要在matlab中使用下標+值重新創建稀疏矩陣,請使用spconvert
。
您可以使用find獲得指數&值向量:
[i,j,val] = find(data)
data_dump = [i,j,val]
您可以重新從data_dump與spconvert,其目的是要「導入從稀疏矩陣外部格式」數據(所以我想這是一個很好的導出格式):
data = spconvert(data_dump)
您可以保存到ASCII:
save -ascii data.txt data_dump
但這轉儲指數爲雙,你可以寫出來更精美,的fopen/fprintf中/ FCLOSE:
fid = fopen('data.txt','w')
fprintf(fid,'%d %d %f\n', transpose(data_dump))
fclose(fid)
希望這有助於。
dlmwrite - 寫矩陣爲ASCII分隔的文件 語法
dlmwrite(文件名,M)
dlmwrite(文件名,M 'd')
dlmwrite(文件名,女, 'd',R,C)
dlmwrite(文件名,M 'attrib1',值1, 'attrib2',值2,...)
dlmwrite(文件名,男,「-append」)
dlmwrite(文件名,男,「-append」,屬性值列表)
- 1. 如何將稀疏矩陣保存到matlab文件中
- 2. 從一個大的文本文件到Python的稀疏矩陣
- 3. 如何添加一列並保存在文本文件中的稀疏矩陣?
- 4. 將稀疏矩陣轉儲到文件
- 5. 在R中創建一個非常大的稀疏矩陣
- 6. julia-lang有效地保存/加載稀疏矩陣到文件或從文件中加載稀疏矩陣
- 7. 稀疏三元組稀疏矩陣matlab
- 8. svd的一個非常大的稀疏矩陣
- 9. 如何將稀疏矩陣寫入文本文件
- 10. 如何將scipy稀疏矩陣保存到實木複合地板文件中
- 11. 保存非常大的矩陣在Matlab
- 12. matlab:稀疏矩陣分解
- 13. 在R中你如何爲文件寫一個稀疏矩陣?
- 14. 擴展/稀疏矩陣轉換成一個更大的稀疏矩陣
- 15. 非常大的稀疏矩陣R中的k-均值聚類?
- 16. 徵:如何初始化一個稀疏矩陣與一些子稀疏矩陣
- 17. R - 在非常大的稀疏矩陣中更新列
- 18. MATLAB - 稀疏到稠密矩陣
- 19. 如何在Matlab中計算大型稀疏矩陣的零點?
- 20. Matlab中的稀疏三維矩陣
- 21. matlab中的稀疏矩陣數組
- 22. 保存文本矩陣:MATLAB
- 23. 如何合併大的稀疏矩陣
- 24. 一個非常大的稀疏矩陣的第一個特徵向量?
- 25. 從稀疏矩陣中提取一個塊作爲另一個稀疏矩陣
- 26. 如何將矩陣保存到matlab中的文件中
- 27. 稀疏矩陣
- 28. 大型稀疏矩陣上的快速非負矩陣分解
- 29. 在matlab中繪製稀疏矩陣
- 30. 相乘兩個非稀疏矩陣
我很困惑 - 爲什麼使用java.io而不是MATLAB的內置fopen和fprintf? – SCFrench 2009-12-11 23:56:30
可能是因爲我比matlab知道更好的java,並且它是一個丟棄代碼,所以它不需要很漂亮。它只是需要正常工作:) – Midhat 2009-12-15 16:57:40