【问题标题】:How to construct a matrix in Julia sequentially?如何在 Julia 中按顺序构造矩阵?
【发布时间】:2016-02-01 23:35:24
【问题描述】:

我需要在 Julia 中通过附加行来构造一个矩阵。思路是这样的:

mat = []     # initialize empty mat
for i = 1:5
    x, y = f(i), g(i)    # here f and g are previously defined functions
    mat = [mat; [x y]]
end

这不起作用,我得到一个错误:

ERROR: DimensionMismatch("维度 2 不匹配(预期 2 得到 1)")

在我尝试附加到mat 的行中。我是朱莉娅的新手。我怎样才能完成我想要的?

【问题讨论】:

  • 如果您不知道需要预先添加多少行(因此无法预先分配),也许Vector{Vector{T}} 会更有效?您可以使用 push! 为每个内部向量动态添加元素,而性能开销非常小。

标签: multidimensional-array julia


【解决方案1】:

初始的mat = [] 创建一个一维数组。初始化的正确方法是mat = reshape([],0,2)。也许还建议键入数组。例如,mat = Array{Float64}(0,2)

以这种方式连接行的成本很高,因为 Julia 使用的内存中数组的列优先顺序。考虑定义完整的数组并在循环中分配元素。可能是mat = Array{Float64}(5,2)

另外,一位评论者建议 Matrix(0,2) 这是另一种初始化 0x2 矩阵的方法。

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多