下三角矩阵等于Julia中的值

Ell*_*lie 3 julia

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

mat <- matrix(0, n,n)
mat[lower.tri(mat, diag=FALSE)] <- c
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样:

          [,1] [,2]
[1,] 0.0000000    0
[2,] 0.4646787    0
Run Code Online (Sandbox Code Playgroud)

我能够在Julia中创建零矩阵,但我不知道如何将lowertriangular函数与c值一起放在其中.

Mat*_* B. 5

这可能是朱莉娅最接近的等价物:

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
Run Code Online (Sandbox Code Playgroud)

当然,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
Run Code Online (Sandbox Code Playgroud)

  • 一个很好的答案!类似的想法更简单一点是`tril!(fill(c,n,n), - 1)`. (2认同)