Нижняя Треугольная Матрица равна значению в Юлии - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь найти нижнюю треугольную матрицу в Юлии и поместить эту матрицу в матрицу нулей (заменяя нули). Затем я хочу установить нижнюю треугольную матрицу равной значению с. В R это будет выглядеть примерно так:

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

с выводом, который выглядит следующим образом:

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

Я могу сделать матрицу нулей в Юлии, но я не знаю, как разместить внутри нее нижнюю треугольную функцию вместе со значением c.

1 Ответ

0 голосов
/ 28 июня 2018

Вот, вероятно, самый близкий эквивалент в Юлии:

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

Конечно, одно из больших преимуществ Джулии в том, что вам не нужно беспокоиться о создании этих умных однострочников почти столько же. Запись наивных циклов 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
...