Add: julia-0.6.2
Former-commit-id: ccc667cf67d569f3fb3df39aa57c2134755a7551
This commit is contained in:
52
julia-0.6.2/share/doc/julia/examples/ndgrid.jl
Normal file
52
julia-0.6.2/share/doc/julia/examples/ndgrid.jl
Normal file
@@ -0,0 +1,52 @@
|
||||
# This file is a part of Julia. License is MIT: https://julialang.org/license
|
||||
|
||||
ndgrid(v::AbstractVector) = copy(v)
|
||||
|
||||
function ndgrid{T}(v1::AbstractVector{T}, v2::AbstractVector{T})
|
||||
m, n = length(v1), length(v2)
|
||||
v1 = reshape(v1, m, 1)
|
||||
v2 = reshape(v2, 1, n)
|
||||
(repmat(v1, 1, n), repmat(v2, m, 1))
|
||||
end
|
||||
|
||||
function ndgrid_fill(a, v, s, snext)
|
||||
for j = 1:length(a)
|
||||
a[j] = v[div(rem(j-1, snext), s)+1]
|
||||
end
|
||||
end
|
||||
|
||||
function ndgrid{T}(vs::AbstractVector{T}...)
|
||||
n = length(vs)
|
||||
sz = map(length, vs)
|
||||
out = ntuple(i->Array{T}(sz), n)
|
||||
s = 1
|
||||
for i=1:n
|
||||
a = out[i]::Array
|
||||
v = vs[i]
|
||||
snext = s*size(a,i)
|
||||
ndgrid_fill(a, v, s, snext)
|
||||
s = snext
|
||||
end
|
||||
out
|
||||
end
|
||||
|
||||
meshgrid(v::AbstractVector) = meshgrid(v, v)
|
||||
|
||||
function meshgrid{T}(vx::AbstractVector{T}, vy::AbstractVector{T})
|
||||
m, n = length(vy), length(vx)
|
||||
vx = reshape(vx, 1, n)
|
||||
vy = reshape(vy, m, 1)
|
||||
(repmat(vx, m, 1), repmat(vy, 1, n))
|
||||
end
|
||||
|
||||
function meshgrid{T}(vx::AbstractVector{T}, vy::AbstractVector{T},
|
||||
vz::AbstractVector{T})
|
||||
m, n, o = length(vy), length(vx), length(vz)
|
||||
vx = reshape(vx, 1, n, 1)
|
||||
vy = reshape(vy, m, 1, 1)
|
||||
vz = reshape(vz, 1, 1, o)
|
||||
om = ones(Int, m)
|
||||
on = ones(Int, n)
|
||||
oo = ones(Int, o)
|
||||
(vx[om, :, oo], vy[:, on, oo], vz[om, on, :])
|
||||
end
|
||||
Reference in New Issue
Block a user