AI by Hand ✍️

AI by Hand ✍️

Discrete Fourier Transform by Hand ✍️

Calculating AI by Hand: 19 of 28

Prof. Tom Yeh's avatar
Prof. Tom Yeh
Jun 24, 2024
∙ Paid

Library › Calculating AI by Hand ✍️

  1. Matrix Multiplication by Hand ✍️

  2. Multi Layer Perceptron (MLP) by Hand ✍️

  3. Backpropagation by Hand ✍️

  4. SVM by Hand ✍️

  5. Batch Normalization by Hand ✍️

  6. Dropout by Hand ✍️

  7. Recurrent Neural Network (RNN) by Hand ✍️

  8. LSTM by Hand ✍️

  9. Deep RNN by Hand ✍️

  10. Self Attention by Hand ✍️

  11. Transformer by Hand ✍️

  12. Autoencoder by Hand ✍️

  13. Variational Auto Encoder (VAE) by Hand ✍️

  14. Sparse Auto Encoder (SAE) by Hand ✍️

  15. Generative Adversarial Network (GAN) by Hand ✍️

  16. Sampling a Sentence by Hand ✍️

  17. Residual Network by Hand ✍️

  18. U-Net by Hand ✍️

  19. Discrete Fourier Transform by Hand ✍️

  20. Graph Convolutional Network (GCN) by Hand ✍️

  21. CLIP by Hand ✍️

  22. Vector Database by Hand ✍️

  23. Mixture of Experts (MoE) by Hand ✍️

  24. Switch Transformer by Hand ✍️

  25. Mamba's S6 by Hand ✍️

  26. Sora's Diffusion Transformer (DiT) by Hand ✍️

  27. BitNet by Hand ✍️

  28. Reinforcement Learning with Human Feedback (RLHF) by Hand ✍️

In signal processing, the Discrete Fourier Transform (DFT) is no doubt the most important method. But the math involved is extremely complex, literally, involving a summation over a complex number term e^(-iwt), where e is the Euler number, i is the imaginary unit, w is the angular frequency, and t is time.

I developed this exercise to demonstrate that underneath such complexity, DFT is just a series of matrix multiplications you can calculate by hand. ✍️ Once you see that, it should not surprise you that a deep neural network, which is also a series of matrix multiplications, with activation functions in-between, can learn to perform DFT to process and analyze signals so effectively.

💡 Learned vs. Fixed: U-Net learns its filters from data to process a signal in the spatial domain. The DFT is the classical opposite, a fixed transform, designed by hand rather than learned, that views the same signal in the frequency domain as a combination of cosine waves.

How does DFT work?

Setup

Step 1 of 12: Given

  • Signals A, B, and C in the 🟧 frequency domain:

  • A = cos(w) + 2cos(2w)

  • B = cos(w) + cos(3w) + cos(4w)

  • C = -cos(2w) + cos(3w)

  • Each signal is a weighed sum of four cosine waves at frequencies 1w, 2w, 3w, and 4w.

  • We will apply Inverse DFT to convert the signals to time domain representations, and then demonstrate DFT can convert back to their original frequency domain representations.

  • Signal X in the 🟩 time domain. X is sampled at 10 time points 1t, 2t, …, 10t:

  • X = [-2.5, -1.8, 3, -0.7, -1.0, -0.7, 3, -1.8, -2.5, 5]

  • Suppose X is also a weighted sum of the same four cosine waves, but we don’t already know their weights. We will apply DFT to discover them.


Step 2 of 12: Frequency Matrix (F)

  • Write the coefficients of A, B, C as a matrix F. Each signal is a row. Each frequency is a column.

  • A → [1, 2, 0, 0]

  • B → [1, 0, 1, 1]

  • C → [0, -1, 1, 0]


Step 3 of 12: Cosine → Discrete

  • Sample from the continuous cosine waves at discrete time points 1t, 2t, 3t, to 10t.

This post is for paid subscribers

Already a paid subscriber? Sign in
© 2026 Tom Yeh · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture