Vector operations
InfiniteVectors.downsample
— Functiondownsample(vec::InfiniteArrays, m::Int)
The resulting vector r
satisfies r(k) = vec(mk)
InfiniteVectors.upsample
— Functionupample(vec::InfiniteVector, m::Int)
The resulting vector r
satisfies r(k) = vec(k/m)
, if k
is multple of m
, otherwise, r(k)=0
InfiniteVectors.shift
— Functionshift(vec::InfiniteArrays, m::Int)
The resulting vector r
satisfies r(k) = vec(k+m)
InfiniteVectors.shift!
— Functionshift!(vec::InfiniteArrays, m::Int)
In-place shifting of vector. (not always possible)
Base.reverse
— Functionreverse(vec::BiInfiniteVector)
Time-reversel: vec(-k)
Base.reverse!
— Functionreverse!(vec::CompactInfiniteVector)
In-place time reversel: vec(-k)
InfiniteVectors.alternating_flip
— Functionalternating_flip(vec::BiInfiniteVector, pivot = 1)
From a given filter $h(i)$, compute a new filter satisfying the alternating flip relation, centered around the given pivot:
$g(k) = (-1)^k h(pivot-k)$
InfiniteVectors.alternating
— Functionalternating(vec::InfiniteVector)
Compute a new 'alternating' filter satisfying $g(k) = (-1)^k h(k)`.$
InfiniteVectors.evenpart
— Functionevenpart(vec::InfiniteVector)
Return the even part of a sequence `s`, defined by `s_e[k] = s[2k]`.
InfiniteVectors.oddpart
— Functionoddpart(vec::InfiniteVector)
Return the odd part of a sequence s
, defined by s_o[k] = s[2k+1]
Base.inv
— Functioninv(a::CompactInfiniteVector{T}, m::Int)
A solution of $[a*b]_{↓m}=δ$, given a.
Base.adjoint
— Functionadjoint(vec::BiInfiniteVector)
Returns the paraconjugate $\overline{vec(-k)}$`
Base.transpose
— Functiontranspose(vec::BiInfiniteVector)
Returns the time-reversed vector vec(-k)
InfiniteVectors.ztransform
— Functionztransform(vec::InfiniteVector, z)
The Z transform of a sequence is a continuous function of z
, defined by $S(z) = \sum_{k\in ℤ} s_k z^{-k}$
InfiniteVectors.fouriertransform
— Functionfouriertransform(s::BiInfiniteVector, ω)
The Fourier transform of a sequence is defined by $S(ω) = \sum_{k\in ℤ} s_k e^{-i ω k}$. It is like the Z transform with $z = e^{i ω}$. The Fourier transform is a 2π
-periodic continuous function of ω
.
InfiniteVectors.moment
— Functionmoment(vec::InfiniteVector, j)
The j-th discrete moment of a sequence is defined as $\sum_{k\in ℤ} h_k k^j$.
InfiniteVectors.leastsquares_inv
— Functionleastsquares_inv(v::BiInfiniteVector, m::Int)
The inverse filter $f = v*[([v*v]_{↓m})^{-1}]_{↑m}$
returns by applying on b $v*[[f*b]_{↓m}]_{↑m}$ the least squares approximation of b
in the range of v
.
Base.:*
— Function*(a::InfiniteVector, b::InfiniteVector)
The convolution is defined as $c(n) = \sum_{k\in ℤ} a(k)b(n-k)$
InfiniteVectors.:⊛
— Function⊛(a::AbstractPeriodicInfiniteVector, b::AbstractPeriodicInfiniteVector)
The circular convoluation defined as $c(n) = \sum_{k=1}^N a(k)b(n-k)$ for $n\in ℤ$, where N
is the period of a
and b
.
InfiniteVectors.:⋆
— Function⋆(a::InfiniteVector, b::InfiniteVector)
The convolution is defined as $c(n) = \sum_{k\in ℤ} a(k)b(n-k)$