看板 RIPE_gender 關於我們 聯絡資訊
https://www.itread01.com/content/1543753506.html 先只談低通的部份 這網址的內容被許多網站拷貝 有相對應的電路圖 有波特圖 波特圖大概是可以用 matlab 去跑吧.. 證明它的算式沒有錯 然後它還有程式 但天殺的它不能為我所用 看到它有 1.3 用C語言實現 超棒的啊,程式都給了 可是為什麼它有一行 *Vo_p = *Vo; 看程式上面的註解 @param Vo : Vo(k) @param Vo_p : Vo(k-1) 我也是做了些功課才知道這是輸出陣列的順序的意思 比如我們還是用 s 陣列來講好了 當我輸出到第 10 個結果 那 k 就是 10 所以 Vo 是 s[10], Vo_p 是 s[9] 我為什麼說這程式不可能正確呢? 這個數位濾波器是個副程式,必需有叫用它的主程式 主程式也附在下面,真佛心的 int main(void) 這個就是主程式 while(1) 這表示是個迴圈 這程式會跑個不停,不會停止 這就是我說主程式不可能正確的原因 而且如果我們以 s[x] 當輸入陣列 它應該從頭跑到尾 就說 0..999 一千個好了 應該要帶入這個註標 程式中也完全沒有看到 換言之,這是個超級抽象的程式;不能跑 我可以稍微落實一下程式,它應該是這樣 for(int x = 0; x < 1000; x++) { 處理 s(x); } 我這個也還是不完整,也是抽象 但我這好多了 憑著一些猜測,這個低通我算是完成了 我可以附上我的主程式 for(int i = 1; i < FFT_N; i++) { LowPassFilter_RC_1order(&s1[i], &s1[i], &s1[i-1], 1024); } 這次我不再用 s 陣列了,我用 s1 因為 s 陣列是複數,留給傅立葉分析用 我想檢查這段程式能不能有效做出低通 所以做完這個就去做一下傅立葉分析咩 這裡,FFT_N 如果加大到五萬,這一小段程式就可以處理五萬筆的數位濾波了 不過呢,前面說過,我無法做五萬筆的傅立葉分析 所以我還是自己塞了個波形進去,只有 512 點 先濾波,再做傅立葉,看看結果:喔~ 有低通了,搞定 討論細節的話 for(int i = 1; i < FFT_N; i++) 為什麼 i 從 1 開始? 因為有引用到前一個 , s1[i-1] 當 i 是 0 時,則 i-1 為 -1,這式子會引起當機 不過我看正式的數位濾波器講解都是 i 從 0 開始 沒做過的東西就補 0 這真要計較的話得改改 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.189.192 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/RIPE_gender/M.1572349795.A.378.html ※ 編輯: HuangJC (123.204.139.199 臺灣), 11/02/2019 16:18:49