This runs fine for me, running Version 0.3.0-prerelease (2014-02-28 04:44 
UTC):

f(i,j) = [i,j]
n=3; m=2
a = [f(i, j) for i in 1:n, j in 1:m]

Out[91]:

3x2 Array{Any,2}:
 [1,1]  [1,2]
 [2,1]  [2,2]
 [3,1]  [3,2]

On Monday, March 24, 2014 10:07:49 AM UTC-4, Linus Mellberg wrote:
>
> Hi!
>
> I'm trying to construct a 3 dimensional array from a number of 1 
> dimensional arrays. Essentially what i would like to do is
>
> a = [f(i, j) for i in 1:n, j in 1:m]
>
> where f(i, j) is a function that returns an array (note, f has to 
> construct the entire array at the same time). The code above creates a 
> 2-dimensional array of arrays, but I would like to get a 3-dimensional 
> array with the arrays returned by f in the first dimension with i and j in 
> the second and third dimension, hope you understand
>
> a[:,:,1] = [f(1,1) f(2,1) ... f(n,1)]
> a[:,:,2] = [f(1,2) f(2,2) ... f(n,2)]
> .
> .
> .
> a[:,:,m] = [f(1,m) f(2,m) ... f(n,m)]
>
> f(i,j) are column arrays above.
>
> It can be achieved by first creating the large matrix and then filling it
>
> a = zeros(Int64, k, n, m)
> for i in 1:n, j in 1:m
>   a[:,i,j] = f(i,j)
> end
>
> Is this the only way? I find it sort of ugly when its usually possible to 
> do nice construction using comprehensions in other cases.
>
>

Reply via email to