Documentation

APAP.Prereqs.FourierTransform.Discrete

Discrete Fourier transform #

This file defines the discrete Fourier transform and shows the Parseval-Plancherel identity and Fourier inversion formula for it.

noncomputable def dft {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) :

The discrete Fourier transform.

Equations
Instances For
    theorem dft_apply {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) (ψ : AddChar G ) :
    dft f ψ = RCLike.wInner 1 (⇑ψ) f
    @[simp]
    theorem dft_zero {G : Type u_1} [AddCommGroup G] [Fintype G] :
    dft 0 = 0
    @[simp]
    theorem dft_add {G : Type u_1} [AddCommGroup G] [Fintype G] (f g : G) :
    dft (f + g) = dft f + dft g
    @[simp]
    theorem dft_neg {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) :
    dft (-f) = -dft f
    @[simp]
    theorem dft_sub {G : Type u_1} [AddCommGroup G] [Fintype G] (f g : G) :
    dft (f - g) = dft f - dft g
    @[simp]
    theorem dft_const {G : Type u_1} [AddCommGroup G] [Fintype G] {ψ : AddChar G } (a : ) ( : ψ 0) :
    dft (Function.const G a) ψ = 0
    @[simp]
    theorem dft_smul {G : Type u_1} [AddCommGroup G] [Fintype G] {𝕝 : Type u_2} [CommSemiring 𝕝] [StarRing 𝕝] [Algebra 𝕝 ] [StarModule 𝕝 ] [IsScalarTower 𝕝 ] (c : 𝕝) (f : G) :
    dft (c f) = c dft f
    @[simp]
    theorem wInner_cWeight_dft {G : Type u_1} [AddCommGroup G] [Fintype G] (f g : G) :

    Parseval-Plancherel identity for the discrete Fourier transform.

    @[simp]

    Parseval-Plancherel identity for the discrete Fourier transform.

    theorem dft_inversion {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) (a : G) :
    (Finset.univ.expect fun (ψ : AddChar G ) => dft f ψ * ψ a) = f a

    Fourier inversion for the discrete Fourier transform.

    theorem dft_inversion' {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) :
    (Finset.univ.expect fun (ψ : AddChar G ) => dft f ψ ψ) = f

    Fourier inversion for the discrete Fourier transform.

    theorem dft_dft_doubleDualEmb {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) (a : G) :
    theorem dft_dft {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) :
    theorem dft_inv {G : Type u_1} [AddCommGroup G] [Fintype G] {f : G} (ψ : AddChar G ) (hf : IsSelfAdjoint f) :
    dft f ψ⁻¹ = (starRingEnd ) (dft f ψ)
    @[simp]
    theorem dft_conj {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) (ψ : AddChar G ) :
    dft ((starRingEnd (G)) f) ψ = (starRingEnd ) (dft f ψ⁻¹)
    theorem dft_conjneg_apply {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) (ψ : AddChar G ) :
    dft (conjneg f) ψ = (starRingEnd ) (dft f ψ)
    @[simp]
    theorem dft_conjneg {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) :
    theorem dft_comp_neg_apply {G : Type u_1} [AddCommGroup G] [Fintype G] (f : G) (ψ : AddChar G ) :
    dft (fun (x : G) => f (-x)) ψ = dft f (-ψ)
    @[simp]
    theorem dft_balance {G : Type u_1} [AddCommGroup G] [Fintype G] {ψ : AddChar G } (f : G) ( : ψ 0) :
    dft (Fintype.balance f) ψ = dft f ψ
    @[simp]
    theorem dft_trivChar {G : Type u_1} [AddCommGroup G] [Fintype G] [DecidableEq G] :
    @[simp]
    theorem dft_one {G : Type u_1} [AddCommGroup G] [Fintype G] :
    @[simp]
    theorem dft_indicator_one_zero {G : Type u_1} [AddCommGroup G] [Fintype G] (A : Finset G) :
    dft ((↑A).indicator fun (x : G) => 1) 0 = A.card
    theorem dft_ddconv_apply {G : Type u_1} [AddCommGroup G] [Fintype G] [DecidableEq G] (f g : G) (ψ : AddChar G ) :
    dft (f ∗ᵈ g) ψ = dft f ψ * dft g ψ
    theorem dft_dddconv_apply {G : Type u_1} [AddCommGroup G] [Fintype G] [DecidableEq G] (f g : G) (ψ : AddChar G ) :
    dft (f ○ᵈ g) ψ = dft f ψ * (starRingEnd ) (dft g ψ)
    @[simp]
    theorem dft_ddconv {G : Type u_1} [AddCommGroup G] [Fintype G] [DecidableEq G] (f g : G) :
    dft (f ∗ᵈ g) = dft f * dft g
    @[simp]
    theorem dft_dddconv {G : Type u_1} [AddCommGroup G] [Fintype G] [DecidableEq G] (f g : G) :
    dft (f ○ᵈ g) = dft f * (starRingEnd (AddChar G )) (dft g)
    @[simp]
    theorem dft_iterConv {G : Type u_1} [AddCommGroup G] [Fintype G] [DecidableEq G] (f : G) (n : ) :
    dft (f ∗ᵈ^ n) = dft f ^ n
    @[simp]
    theorem dft_iterConv_apply {G : Type u_1} [AddCommGroup G] [Fintype G] [DecidableEq G] (f : G) (n : ) (ψ : AddChar G ) :
    dft (f ∗ᵈ^ n) ψ = dft f ψ ^ n