2015-08-06 2 views
4

Я ищу что-то в Юлии, как понимание, но для матрицы вместо вектора. Если у меня есть какой-либо одной переменной функции f(x) и я хочу, массив, который заполняется f(i) для i в 1..10, я могу это сделать:Инициализация матрицы с помощью функции

[f(i) for i = 1:10] 

Если у меня есть некоторые функции двух переменных g(i,j) и я хочу матрицу от i=[1,10]; j=[1,10] заполнены функции я могу это сделать:

M = zeros (10,10) 

for i in 1:10 
    for j in 1:10 
     M[i,j] = g(i,j) 
    end 
end 

есть некоторые ярлык, который позволяет мне выразить, что в течение более короткого пути и, не теряя времени, выделяя все, что нули?

ответ

8

Просто использовать multidimensional comprehension непосредственно:

julia> g(x,y) = 2x+y 
g (generic function with 1 method) 

julia> [g(i,j) for i=1:10, j=1:10] 
10x10 Array{Int64,2}: 
    3 4 5 6 7 8 9 10 11 12 
    5 6 7 8 9 10 11 12 13 14 
    7 8 9 10 11 12 13 14 15 16 
    9 10 11 12 13 14 15 16 17 18 
11 12 13 14 15 16 17 18 19 20 
13 14 15 16 17 18 19 20 21 22 
15 16 17 18 19 20 21 22 23 24 
17 18 19 20 21 22 23 24 25 26 
19 20 21 22 23 24 25 26 27 28 
21 22 23 24 25 26 27 28 29 30 

Это работает для любого числа измерений, путем добавления переменных диапазонов в конце.