Discrete Fourier Transform 🎈

Fourier transforms of a sine wave using a Pluto.jl notebook:

sigmoid_fit
The interactive notebook can be run on binder, but be patient 😴.

begin
  using Plots, PlutoUI

  function DFT_plot(ω₀, N)
    f(ω) = abs(sin(N*ω/2)/sin(ω/2))
    ω_DFT = (0:N-1)*2π/N
    plot(ω -> f(ω - ω₀), 0, 2π, label="Fourier transform", xlabel="ω", w=2)
    plot!(ω_DFT, f.(ω_DFT .- ω₀), line = :stem, 
      label="Discrete Fourier Transform", marker = :circle, w=2)
    vline!([ω₀], label="ω₀ = $(round(ω₀, digits=2))", w=3)
    title!("Fourier transforms of x(n)=exp(jω₀n), n=1…$N")
  end
end
begin
  ω₀Slider = @bind ω₀ Slider(0:1E-2:2π, default = 0.7)
  NSlider = @bind N Slider(4:30, default = 10)

  md"""**Sine parameters**
  
  ω₀ $ω₀Slider
  
  N $NSlider
  """
end
DFT_plot(ω₀, N)
André Ferrari
André Ferrari
Professor

My research interests include statistical data processing, inverse problems and machine learning