這幾天我在幫師兄做傅立葉分析,就是從示波器踩過來的資料,儲存在excel檔案中。用matlab讀取,進行fft運算。大概通過幾天的學習dft,瞭解到如果你拿來一個向量,N個點。進行fft後結果當然也是N個點。但是這些點的頻率你是無法得知的。因為你沒有交代著N個點的時間長度。 以我最近幫師兄做的工作為例。示波器對300HZ電壓進行取樣,時長0.1s。那麼也就是30個周波。由於示波器的取樣頻率很高,所得到的資料是50w個點。這僅僅是0.1s啊 儲存在exce結果透過matlab讀取後,進行fft運算。結果也是50w 個點。於是問題來了,哪一個點是我要的300hz呢。答案是第31個點。 為什麼呢,因為matlab陣列是從1開始,第一個點是直流分量。即0hz,那為什麼第31點是300hz呢。因為時間長度是0.1s。那麼這段訊號進行fft的解析度就是10hz。所以300hz就是 30+1的點。 順便說一句,matlab進行fft運算的結果,幅值要經過*2/n的運算才能得到真實值。n是取樣點個數。還有,直流分量要再除以2,即第一個點雖然是直流 但是 幅值是真實值的2倍。原理高數傅立葉級數講過,已經餵狗。 回答的不好,不對的地方請高手指正。
這幾天我在幫師兄做傅立葉分析,就是從示波器踩過來的資料,儲存在excel檔案中。用matlab讀取,進行fft運算。大概通過幾天的學習dft,瞭解到如果你拿來一個向量,N個點。進行fft後結果當然也是N個點。但是這些點的頻率你是無法得知的。因為你沒有交代著N個點的時間長度。 以我最近幫師兄做的工作為例。示波器對300HZ電壓進行取樣,時長0.1s。那麼也就是30個周波。由於示波器的取樣頻率很高,所得到的資料是50w個點。這僅僅是0.1s啊 儲存在exce結果透過matlab讀取後,進行fft運算。結果也是50w 個點。於是問題來了,哪一個點是我要的300hz呢。答案是第31個點。 為什麼呢,因為matlab陣列是從1開始,第一個點是直流分量。即0hz,那為什麼第31點是300hz呢。因為時間長度是0.1s。那麼這段訊號進行fft的解析度就是10hz。所以300hz就是 30+1的點。 順便說一句,matlab進行fft運算的結果,幅值要經過*2/n的運算才能得到真實值。n是取樣點個數。還有,直流分量要再除以2,即第一個點雖然是直流 但是 幅值是真實值的2倍。原理高數傅立葉級數講過,已經餵狗。 回答的不好,不對的地方請高手指正。