2020年7月14日 星期二

Python 數位信號處理 (DSP) 的三本好書

最近逛書店發現 Python 已經變成國民程式語言, 書櫃上整整兩列都是 Python 的各類書籍 (主要是入門級與機器學習類), 以前的程式語言王者 Java 新書寥寥可數, 這一切都是拜 AlphaGo 之賜, 才讓 Python 這個老語言鹹魚翻身爆紅, 應用面可說包山包海.

今天在網路上看到兩本用 Python 做數位信號處理的書 (以前大都是用商用版權軟體如 MATLAB), 第一本是歐萊禮出版的 :

Think DSP: Digital Signal Processing in Python (Oreilly, 2016)


Source : 天瓏



書中範例程式碼可在 GitHub 中下載 :

https://github.com/AllenDowney/ThinkDSP

第二本是 Springer 出版的 :

Python for Signal Processing: Featuring IPython Notebooks (Springer, 2014)


Source : 天瓏


此書使用直觀易懂的 Python 程式寫法撰寫範例以便於學生自學, 主要內容包含取樣定理, 離散傅立葉分析, 頻譜分析, 以及有限脈衝響應 (數位) 濾波器等. 我非常認同作者序言中提到的一句話 : 唯一的學習之道就是動手做實驗 ("the only way to learn is to experiment as you go"), 因為我學任何知識技術也都是透過動手做測試.

另外一本是去年我在明儀買的, 也是目前市面上唯一一本用 Python 做 DSP 的好書 (中原資工系張元翔教授寫的) :

# 數位信號處理 Python 程式實作 (全華, 2019)


Source : 誠品


此書雖然不算厚, 但 z 轉換, 卷積, FIR, IIR 等主題都有帶到, 是實用性非常高的一本書. 去年底這本已出第二版, 我想應該賣得不錯 :

數位訊號處理 : Python 程式實作, 2/e (附實作光碟)


Source : 天瓏


此書的範例程式檔下載連結 :

全華數位信號處理 Python 程式實作範例下載 (from Mega)

不過要讀這三本書的前提是必須先有 Python 基礎並熟習這三個 Python 第三方套件 :
  1. Numpy
  2. SciPy
  3. Matplotlib
以前我用 Praat 做實驗語音學分析, 對於 Praat 作者運用數位信號處理技術寫出這麼棒的軟體深感佩服. 當時蒐集了一堆語音辨識論文, 但對於如何實作卻感到很茫然, 後來找到一本楊鎮光寫的書, 裡面有真實的程式碼說明如何處理音訊框, 但這本書用的是 Visual Basic, 為此還花了點時間去學 VB 6. 參考 :

# Visual Basic 與語音辨識 (松崗, 楊鎮光, 2002)


Source : 天瓏


現在改用 Python 來做 DSP, 工具更多更好用了 (事實上我與微軟的 VB 系列語法格格不入).

2 則留言 :

Jed 提到...

您好,請問自學建議那本入手?或者有入手順序?

小狐狸事務所 提到...

Hi, 自學當然是從全華這本中文書較適合, 但如果可以直接讀原文, 我認為 "Python for Signal Processing" 這本更佳, 不過要先把 Python, Basics, Numpy, Matplotlib 先弄熟讀起來較順.