Julia 中的矩阵输入?

问题描述 投票:0回答:2

在 Julia 中,我想编写一个函数,多次提示用户输入矩阵,然后将其输入存储到数组中。到目前为止我已经尝试过以下方法:

function acceptlist()
    matrix_array=[]
    while true:
        matrix_input=read() #don't know what function to use?
        if matrix_input="quit"
            break
        end
        push!(matrix_array, matrix_input)
    end
end

但是,我不确定如何以我想要的方式接受矩阵输入。我有什么办法接受用户的矩阵输入吗?另外,我希望用户NOT必须手动将矩阵输入到函数中(使用readdlm或类似的东西)。例如,我希望用户能够从另一个文件读取矩阵,将其分配给某个变量,然后将该变量作为用户输入输入到此函数acceptlist()中。

matrix julia linear-algebra numerical-methods
2个回答
0
投票

此代码可能提供您需要的示例(抱歉,但对于完整答案有点累):

m = Matrix{Int}(undef,0,0)
while true
    s = readline()
    if length(s)<1
           break
    end
    r = hcat(parse.(Int, split(s))...)
    m = size(m,1)>0 ? vcat(m,r) : r
end

运行后,

m
应该有一个Int矩阵。相同的逻辑适用于 Float64,并且可以根据代码的级别和上下文添加更多验证。

例如,跑步可能如下所示:

1 2 3
2 3 4
4 5 6


julia> m
3×3 Matrix{Int64}:
 1  2  3
 2  3  4
 4  5  6

0
投票

如果您使用的是 Linux 或 Mac,则可以使用

DelimitedFiles
并运行
readdlm(stdin)
。完成后,用户需要按 Ctrl+D

查看 Ubuntu 上的 Julia 会话示例:

julia> readdlm(stdin;comments=true)
1 2 3
4 5 6 # I now press Ctrl+D
2×3 Matrix{Float64}:
 1.0  2.0  3.0
 4.0  5.0  6.0

这在 Windows 上不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.