在 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()中。
此代码可能提供您需要的示例(抱歉,但对于完整答案有点累):
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
如果您使用的是 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 上不起作用。