下三角矩阵等于Julia中的值

下三角矩阵等于Julia中的值,julia,Julia,我试图在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中生成零矩阵,但我不知道如何将lowertriangular函数和c值一起放在其中 这可能是茱

我试图在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中生成零矩阵,但我不知道如何将lowertriangular函数和c值一起放在其中

这可能是茱莉亚最接近的对应词:

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的一大优势是,你几乎不需要担心如何创建这些聪明的单行线。为循环编写朴素的
,非常简单,应该具有类似的性能:

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!(填充(c,n,n),-1)