【问题标题】:Lower Triangular Matrix equal to value in Julia下三角矩阵等于 Julia 中的值
【发布时间】:2018-06-28 05:59:50
【问题描述】:

我试图在 Julia 中找到一个下三角矩阵,并将该矩阵放在零矩阵中(替换零)。然后我想设置下三角矩阵等于值c。在 R 中,这看起来像这样:

mat <- matrix(0, n,n)
mat[lower.tri(mat, diag=FALSE)] <- c

输出如下所示:

          [,1] [,2]
[1,] 0.0000000    0
[2,] 0.4646787    0

我可以在 Julia 中创建 zeros 矩阵,但我不知道如何将 lowertriangular 函数与 c 值一起放置在其中。

【问题讨论】:

    标签: julia


    【解决方案1】:

    这可能是 Julia 中最接近的等价物:

    julia> n = 3; c = 0.4646787; A = zeros(n,n);
    
    julia> A[tril!(trues(size(A)), -1)] .= c;
    
    julia> A
    3×3 Array{Float64,2}:
     0.0       0.0       0.0
     0.464679  0.0       0.0
     0.464679  0.464679  0.0
    

    当然,Julia 的一大优势是您几乎无需担心创建这些巧妙的单行代码。写出幼稚的for 循环非常容易,并且应该具有类似的性能:

    julia> for j in 1:size(A, 2), i in j+1:size(A, 1)
               A[i, j] = c
           end
    
    julia> A
    3×3 Array{Float64,2}:
     0.0       0.0       0.0
     0.464679  0.0       0.0
     0.464679  0.464679  0.0
    

    【讨论】:

    • 一个很好的答案!一个更简单的类似想法是tril!(fill(c, n, n), -1)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2017-03-19
    相关资源
    最近更新 更多