我得到了一個應該包含一些矩陣的 Matlab 檔案。我在 Matlab 在線打開它,它看起來像一個 Excel 表,其中每個單元格都有一個類變數,double并被稱為sparse double. 如果我嘗試列印它,它會給我一個坐標串列,后跟 1。例如:
(100,1) 1
(123,132) 1
我正在使用的矩陣只能有 0,1 作為元素,所以我假設所有其他坐標都為零。但是,我不知道如何將其顯示為矩陣或以某種方式將其作為陣列匯入 Julia。我對 Matlab 一無所知,我什至不想在 Matlab 上作業,因為我的程式的其余部分無論如何都在 Julia 中。
編輯:正如評論所建議的,我只是留下我正在使用的代碼以便嘗試匯入它。在 Matlab 程式中,我有一個“單元格”格式的單個變數,其大小為 1x10,稱為modmat. 其中每一個都包含 1 個266x266 sparse double矩陣,我正在訪問它modmat{1},modmat{2}等等。
MATLAB:
writematrix(modmat{1},"Mat1.txt")
在朱莉婭:
> using DelimitedFiles
> M1 = open(readdlm,"Mat1.txt")
輸出是一個266×1 Matrix{Any}:變數
uj5u.com熱心網友回復:
我會推薦MAT.jl包來mat安全有效地讀入檔案。看起來它也可以讀取稀疏矩陣,甚至可以一口氣讀取整個元胞陣列。
為了完整起見(如果您由于某種原因無法執行上述操作),以下是讀取包含格式行的檔案的方法
(100,1) 1
(123,132) 1
:
function readsparsemat(io::IO)
linere = r"^\((\d ),(\d )\) # coordinates
\s # some number of spaces
1$ # 1 at the end of the line
"x # extended regex complete
matches = match.(linere, readlines(io))
coords = [parse.(Int, (m[1], m[2])) for m in matches]
sparse(first.(coords), last.(coords), true)
end
julia> readsparsemat(IOBuffer("(10,1) 1
(12,13) 1
")) # test with an IOBuffer
12×13 SparseMatrixCSC{Bool, Int64} with 2 stored entries:
...
julia> open(readsparsemat, "matfilename") #actual usage
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371521.html
