Glad to help!  Cheers, Kevin

On Wed, Dec 25, 2013 at 8:00 PM, Sheehan Olver <[email protected]>wrote:

> Ah, yes, my code was actually
>
> mapreduce(x->x,vcat,[f(k)' for k = 1:n])
>
> Your method is a lot simpler, thanks!  Didn’t know about the … syntax.
>
>
>
> On 26 Dec 2013, at 2:51 pm, Kevin Squire <[email protected]> wrote:
>
>
> On Wed, Dec 25, 2013 at 7:20 PM, Sheehan Olver <[email protected]>wrote:
>
>> Suppose f(k) returns a Array{Float64,1}, and I want to construct an
>> Array{Float64,2} whose kth row is f(k).  What's the best way to do this?
>>  Right now I'm using
>>
>>      mapreduce(x->x,vcat,[f(k) for k = 1:n])
>>
>> where the point of the mapreduce is to convert the Array{Any,1} to
>> Array{Float64,2}.  But it seems like it should be simpler.
>>
>
> First, it seems like f(k) returns a row vector (which is a 1xn matrix of
> type Array{Float64, 2}), rather than a column vector of type Array{Float64,
> 1}.  Otherwise, your mapreduce code above would produce one long
> Array{Float64, 1} vector.
>
> If f(k) actually returns a column vector, you could do
>
>     hcat([f(k) for k = 1:n]...)'
>
> This concatenates the column vectors horizontally, then takes a transpose
> to put each return value in a row.  In my tests, that returns an
> Array{Float64, 2}, even though the input is an Array{Any,1}.
>
> Since Julia uses column major order, you might consider *not* taking the
> transpose, and leaving the return values in successive columns, rather than
> successive rows.  But that depends on what you're actually doing.
>
> Cheers,
>
>     Kevin
>
> P.S. I'm testing on a recently compiled version from master.  If you're
> using the current release version (v0.2), there's a small chance you might
> have different results, although I'm pretty sure it should be the same.
>
>
>

Reply via email to