JuliaApproximation / JuliaApproximation/ApproxFun.jl
Array concatenations produce unexpected results
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 559
- Forks
- 71
- PR merge metrics
- No merged PRs in 30d
Description
The following illustrates the issue:
julia> f = Fun(Fourier(), [1,2,3,4])
Fun(Fourier(【0.0,6.283185307179586❫), [1, 2, 3, 4])
julia> g = Fun(Fourier(), [1,0,0,4])
Fun(Fourier(【0.0,6.283185307179586❫), [1, 0, 0, 4])
julia> Af = [f g]
Fun(1×2 ArraySpace:
ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}[Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫)], [1, 2, 1, 0, 3, 4, 0, 4])
julia> [Af Af]
1×2 Matrix{Fun{ApproxFunBase.ArraySpace{ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}, 2, PeriodicSegment{Float64}, Float64, Matrix{ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}}}, Int64, Vector{Int64}}}:
Fun(1×2 ArraySpace:
SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}[Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫)], [1, 2, 1, 0, 3, 4, 0, 4]) … Fun(1×2 ArraySpace:
SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}[Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫)], [1, 2, 1, 0, 3, 4, 0, 4])
julia> [Af; Af]
Fun(2-element ArraySpace:
ApproxFunBase.ArraySpace{ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}, 2, PeriodicSegment{Float64}, Float64, Matrix{ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}}}[1×2 ArraySpace:
ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}[Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫)], 1×2 ArraySpace:
ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}[Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫)]], [1, 2, 1, 0, 1, 2, 1, 0, 3, 4, 0, 4, 3, 4, 0, 4])
[Af Af] is hcat(Af,Af) and I would expect to produce a Fun(1×4 ArraySpace:..., while [Af; Af] is vcat(Af,Af) and I expect to produce a Fun(2×2 ArraySpace:..., as would result using concatenations of usual matrices. In both cases, arrays of matrices are generated, but I need to build the horizonatally or vertically concatenated matrices.
I appologize if I am wrong, and I would appreciate any hint how to obtain the (for me) expected results.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the examples in a Julia REPL, focusing on the hcat and vcat entry points used by [Af Af] and [Af; Af]. Compare the resulting ArraySpace dimensions and coefficient arrays with ordinary matrix concatenation. Done means horizontal concatenation returns a 1×4 Fun and vertical concatenation returns a 2×2 Fun, rather than arrays of Fun matrices.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100