在VB中运用FFT
窗體上放一個picturebox,名稱改為picI_FFT。
在窗體中輸入以下代碼
| Option?Explicit ?? '*模塊******************************************************** 'FFT0?數組下標以0開始 'AR()?數據實部?????????AI()?數據虛部 'N?數據點數,為2的整數次冪 'NI?變換方向?1為正變換,-1為反變換 '*************************************************************** Const?fftIn?=?128 Const?Pi?=?3.1415926 Public?Function?FFT0(AR()?As?Double,?AI()?As?Double,?N?As?Long,?ni?As?Long) ????Dim?i?As?Long,?j?As?Long,?k?As?Long,?L?As?Long,?M?As?Long ????Dim?IP?As?Long,?LE?As?Long ????Dim?L1?As?Long,?N1?As?Long,?N2?As?Long ????Dim?SN?As?Double,?TR?As?Double,?TI?As?Double,?WR?As?Double,?WI?As?Double ????Dim?UR?As?Double,?UI?As?Double,?US?As?Double ????M?=?NTOM(N) ????N2?=?N?/?2 ????N1?=?N?-?1 ????SN?=?ni ????j?=?1 ????For?i?=?1?To?N1 ????????If?i?<?j?Then ????????????TR?=?AR(j?-?1) ????????????AR(j?-?1)?=?AR(i?-?1) ????????????AR(i?-?1)?=?TR ????????????TI?=?AI(j?-?1) ????????????AI(j?-?1)?=?AI(i?-?1) ????????????AI(i?-?1)?=?TI ????????End?If ????????k?=?N2 ????????While?(k?<?j) ????????????j?=?j?-?k ????????????k?=?k?/?2 ????????Wend ????????j?=?j?+?k ????Next?i ????For?L?=?1?To?M ????????LE?=?2?^?L ????????L1?=?LE?/?2 ????????UR?=?1# ????????UI?=?0# ????????WR?=?Cos(Pi?/?L1) ????????WI?=?SN?*?Sin(Pi?/?L1) ????????For?j?=?1?To?L1 ????????????For?i?=?j?To?N?Step?LE ????????????????IP?=?i?+?L1 ????????????????TR?=?AR(IP?-?1)?*?UR?-?AI(IP?-?1)?*?UI ????????????????TI?=?AI(IP?-?1)?*?UR?+?AR(IP?-?1)?*?UI ????????????????AR(IP?-?1)?=?AR(i?-?1)?-?TR ????????????????AI(IP?-?1)?=?AI(i?-?1)?-?TI ????????????????AR(i?-?1)?=?AR(i?-?1)?+?TR ????????????????AI(i?-?1)?=?AI(i?-?1)?+?TI ????????????Next?i ????????????US?=?UR ????????????UR?=?US?*?WR?-?UI?*?WI ????????????UI?=?UI?*?WR?+?US?*?WI ????????Next?j ????Next?L ????If?SN?<>?-1?Then ????????For?i?=?1?To?N ????????????AR(i?-?1)?=?AR(i?-?1)?/?N ????????????AI(i?-?1)?=?AI(i?-?1)?/?N ????????Next?i ????End?If End?Function ?? Private?Function?NTOM(N?As?Long)?As?Long ????Dim?ND?As?Single ????ND?=?N ????NTOM?=?0 ????While?(ND?>?1) ????????ND?=?ND?/?2 ????????NTOM?=?NTOM?+?1 ????Wend End?Function Private?Sub?Form_Load() '*使用********** ????Dim?i?As?Integer ????Dim?xr(128)?As?Double ????Dim?xi(128)?As?Double ????Dim?IaIn(128)?As?Double '賦值,IaIn(i)是采得的數據。 ????For?i?=?0?To?128 ????????IaIn(i)?=?Sin(i)?+?0.5?*?Sin(10?*?i) ????????xr(i)?=?100?*?IaIn(i) ????????xi(i)?=?0 ????Next ?? 'FFT變換 ????Call?FFT0(xr(),?xi(),?128,?1) ?? '繪圖 ????picI_FFT.Scale?(0,?100)-(fftIn?-?1,?-10) ????picI_FFT.DrawWidth?=?2 ????For?i?=?0?To?fftIn?-?1 ????????picI_FFT.Line?(i,?Abs(xr(i)))-(i?+?1,?Abs(xr(i?+?1))),?vbRed '????????picI_FFT.Line?(i,?Abs(xi(i)))-(i?+?1,?Abs(xi(i?+?1))),?vbBlue '????????picI_FFT.Line?(i,?(xr(i)?*?xr(i)?+?xi(i)?*?xi(i))?\?128)-(i?+?1,?(xr(i?+?1)?*?xr(i?+?1)?+?xi(i?+?1)?*?xi(i?+?1))?\?128),?vbBlack ????Next?i End?Sub |
<Linker : http://bbs.csdn.net/topics/390241865>
轉載于:https://www.cnblogs.com/MMLoveMeMM/articles/3025396.html
總結
- 上一篇: java File文件路径获取的几种方法
- 下一篇: andoid 打包短信发送到gmail邮