A. 51單片機做FFT到底行不行我想知道運算的速度有多慢,其轉換時間是多少,請用數字說話。
可以做,但基本上做了這個,其他的就什麼幹不了了
B. 單片機FFT演算法,256點,看看哪裡不對
結果不能直接左移吧?如果都是浮點數的話,那該用除法。
C. 實現頻譜分析,涉及單片機 。FFT變換。哪個高手可以給點思路。。
頻譜分析,首先需要對應的頻譜分析的器件
單片機僅僅進行簡單的控制和數據處理
至於FFT,基本用不到,至於為啥?因為電磁波的時域波形以你的水平是分析不出來的。沒有時域波形,你怎麼FFT成頻域波形?
比方分析光線的頻譜
要先將光線通過分光裝置,把光線色散開,變為頻譜光帶。
還需要光電轉換裝置,用來接收色散開的光,將能量轉為電信號。
最後需要位移控制裝置,控制光電轉換裝置在光帶上移動。
單片機要做的是:控制移動、處理數據。如果需要,還需要量化裝置。
D. 單片機實現傅立葉變換
用FPGA這種單片機
在對FFT(快速傅立葉變換)演算法進行研究的基礎上,描述了用FPGA實現FFT的方法,並對其中的整體結構、蝶形單元及性能等進行了分析。
關鍵詞:
FPGA FFT
傅立葉變換是數字信號處理中的基本操作,廣泛應用於表述及分析離散時域信號領域。但由於其運算量與變換點數N的平方成正比關系,因此,在N較大時,直接應用DFT演算法進行譜變換是不切合實際的。然而,快速傅立葉變換技術的出現使情況發生了根本性的變化。本文主要描述了採用FPGA來實現2k/4k/8k點FFT的設計方法。
1 整體結構
一般情況下,N點的傅立葉變換對為:
其中,WN=exp(-2 pi/N)。X(k)和x(n)都為復數。與之相對的快速傅立葉變換有很多種,如DIT(時域抽取法)、DIF(頻域抽取法)、Cooley-Tukey和Winograd等。對於2n傅立葉變換,Cooley-Tukey演算法可導出DIT和DIF演算法。本文運用的基本思想是Cooley-Tukey演算法,即將高點數的傅立葉變換通過多重低點數傅立葉變換來實現。雖然DIT與DIF有差別,但由於它們在本質上都是一種基於標號分解的演算法,故在運算量和演算法復雜性等方面完全一樣,而沒有性能上的優劣之分,所以可以根據需要任取其中一種,本文主要以DIT方法為對象來討論。
N=8192點DFT的運算表達式為:
式中,m=(4n1+n2)(2048k1+k2)(n=4n1+n2,k=2048k1+k2)其中n1和k2可取0,1,...,2047,k1和n2可取0,1,2,3。
由式(3)可知,8k傅立葉變換可由4×2k的傅立葉變換構成。同理,4k傅立葉變換可由2×2k的傅立葉變換構成。而2k傅立葉變換可由128×16的傅立葉變換構成。128的傅立葉變換可進一步由16×8的傅立葉變換構成,歸根結底,整個傅立葉變換可由基2、基4的傅立葉變換構成。2k的FFT可以通過5個基4和1個基2變換來實現;4k的FFT變換可通過6個基4變換來實現;8k的FFT可以通過6個基4和1個基2變換來實現。也就是說:FFT的基本結構可由基2/4模塊、復數乘法器、存儲單元和存儲器控制模塊構成,其整體結構如圖1所示。
圖1中,RAM用來存儲輸入數據、運算過程中的中間結果以及運算完成後的數據,ROM用來存儲旋轉因子表。蝶形運算單元即為基2/4模塊,控制模塊可用於產生控制時序及地址信號,以控制中間運算過程及最後輸出結果。
2 蝶形運算器的實現
基4和基2的信號流如圖2所示。圖中,若A=r0+j*i0,B=r1+j*i1,C=r2+j*i2,D=r3+j*i3是要進行變換的信號,Wk0=c0+j*s0=1,Wk1=c1+j*s1,Wk2=c2+j*s2,Wk3=c3+j*s3為旋轉因子,將其分別代入圖2中的基4蝶形運算單元,則有:
A′=[r0+(r1×c1-i1×s1)+(r2×c2-i2×s2)+(r3×c3-i3×s3)]+j[i0+(i1×c1+r1×s1)+(i2×c2+r2×s2)+(i3×c3+r3×s3)]� (4)
B′=[r0+(i1×c1+r1×s1)-(r2×c2-i2×s2)-(i3×c3+r3×s3)]+j[i0-(r1×c1-i1×s1)-(
i2×c2+r2×s2)+(r3×c3-i3×s3)] (5)
C′=[r0-(r1×c1-i1×s1)+(r2×c2-i2×s2)-(r3×c3-i3×s3)]+j[i0-(i1×c1+r1×s1)+(i2×c2+r2×s2)-(i3×c3+r3×s3)] (6)
D′=[r0-(i1×c1+r1×s1)-(r2×c2-i2×s2)+(i3×c3+r3×s3)]+j[i0+(r1×c1-i1×s1)-(i2×c2+r2×s2)-(r3×c3-i3×s3)]� (7)
看明白了嗎?
E. 怎樣計算一個單片機程序所需rom大小,計算的是fft演算法分析及顯示所需的容量,請寫明詳細計算過程,並舉例
一般人是不算ROM的大小,至多隻是估計。因為一個完整的程序,不同的人,甚至同一個人,程序的思路方法不一樣,程序大小會差比較多。而且你的程序,除了演算法,還有其他的很多東東,如顯示、按鍵、通信等等,這些可能比你的演算法的程序量還要大得多。
所以建議你先用模擬(如PROTEUS模擬),選用足夠大的ROM的單片機,編制完整的程序,就知道花了多少的程序空間。
F. 單片機 誰懂FFT
FFT就是快速傅里葉變換,是將時域中的數字信號編程頻域,這是數字信號處理的內容,具體是如何進行的,建議你看看數字信號處理這本書
G. 單片機位數對FFT計算有影響嗎
應該說有。位數越多,越容易做高位數運算啊!
對精度的影響應該不大,關鍵還是速度,盡管FFT已經是簡化了的,但計算量還是很大的。
8位單片機,因為位數的關系,同樣的32位數,肯頂沒有ARM做的快啊!
所以,精度容易保證,關鍵的是速度
H. 使用單片機和FFT演算法顯示波形(高分!!!急救!!)
涉及到單片機跟上位機通信得問題,有模塊一般用串口的比較多 網上去找吧 單片機的硬體應該考慮AD轉換器(1024點的話 就用10bit特的AD吧) 若選用 STC的單片機自帶10bitAD 可以不用考慮AD的問題 你的軟體主要會涉及到兩個部分吧 單片機的程序 和 上位機的顯示程序(VB還是delphi就自己目前狀況定吧) 難點還在於通訊這一塊 如果以前沒接觸過花的時間可能會長點 還有你電壓信號一般是工頻的吧 采樣定律要求采樣率是它的兩倍以上 所以100HZ以上的了 而且事實上要大上好幾倍 最好500Hz以上吧(周期就倒數下)現在一般都用數據採集卡了 在大項目中單片機有點古老的感覺 你這課題用LabVIEW的還不錯 幾個框圖一拉就完了 一周可以搞定 呵呵 不過以後要走技術的路 還是要一步一個腳印穩扎穩打從單片機起步吧~~~好了就這么多了,你也不必再問了,下次上線我不知道是什麼時候了~~~
I. 高分求FFT (單片機)的幅度公式和功率公式
幅度就是虛部,實部平方和開根號,功率譜就是對於實部,虛部求平方和,輸入的全部功率功率譜求積分。頻譜泄漏是采樣截斷的問題,得看你具體的輸入信號才能解決。采樣頻率不夠頻譜會混疊,截斷不恰當會泄漏,適當截斷或者用適當窗函數可以削弱泄漏問題
J. fft 是否可以用多個單片機聯合同時計算。 c語言演算法可行性
不可以FFT是遞歸的,你可以用dsp計算,通過spi什麼的串到avr里。