📄 fftxfj.doc
字号:
斈梡FFT (崅懍 僼乕儕僄/僐僒僀儞/僒僀儞 曄姺) 僷僢働乕僕
亂奣梫亃
堦師尦丆俀偺惍悢忔屄偺僨乕僞偺棧嶶Fourier曄姺丆僐僒僀儞曄姺丆僒僀儞
曄姺摍傪峴偄傑偡丏
亂僼傽僀儖撪梕亃
fft2f.c : C偵傛傞FFT僷僢働乕僕 娙堈斉
fft2f.f : Fortran偵傛傞FFT僷僢働乕僕 娙堈斉
fft2ft.c : "fft2f.c" 偺僥僗僩
fft2ft.f : "fft2f.f" 偺僥僗僩
fft4f.c : C偵傛傞FFT僷僢働乕僕 昗弨斉
fft4f.f : Fortran偵傛傞FFT僷僢働乕僕 昗弨斉
fft4ft.c : "fft4f.c" 偺僥僗僩
fft4ft.f : "fft4f.f" 偺僥僗僩
亂僼傽僀儖偺堘偄亃
C斉偲Fortran斉偺撪梕偼傑偭偨偔摨偠丏
娙堈斉偼嶌嬈梡攝楍傪堦愗巊傢側偄丏
昗弨斉偼嶰妏娭悢昞側偳偺嶌嬈梡攝楍傪巊偆丏
昗弨斉偼娙堈斉偵斾傋偰崅懍偐偮崅惛搙丏
亂儖乕僠儞撪梕亃
cdft : 暋慺棧嶶Fourier曄姺
rdft : 幚棧嶶Fourier曄姺/媡曄姺
ddct : 棧嶶僐僒僀儞曄姺/媡曄姺
ddst : 棧嶶僒僀儞曄姺/媡曄姺
dfct : rdft偺僐僒僀儞曄姺(幚懳徧側応崌偺棧嶶Fourier曄姺)
dfst : rdft偺僒僀儞曄姺(幚斀懳徧側応崌偺棧嶶Fourier曄姺)
亂巊偄曽亃
偼偠傔偵:
娙寜側巊梡朄偼丆僷僢働乕僕僾儘僌儔儉偺僐儊儞僩偵傕偁傝傑偡丏巊梡
偺嬶懱椺偼丆僥僗僩僾儘僌儔儉傪嶲徠偟偰壓偝偄丏嶰妏娭悢昞丆嶌嬈椞
堟偼丆fft4f.* 偺傒偱巊梡偡傞偺偱 fft2f.* 傪巊偆応崌偼柍帇偟偰偔
偩偝偄丏
仧暋慺棧嶶Fourier曄姺 :
<応崌侾>
X[k] = 儼_j=0^n-1 x[j]*exp(2*兾*i*j*k/n), 0<=k<n
<応崌俀>
X[k] = 儼_j=0^n-1 x[j]*exp(-2*兾*i*j*k/n), 0<=k<n
傪媮傔傞丏
(拲堄: 儼_j=0^n-1 偼 j=0 偐傜 n-1 傑偱偺榓偲偡傞)
[彂幃]
fft2f.c偺応崌
<応崌侾>
cdft(2*n, cos(M_PI/n), sin(M_PI/n), a);
<応崌俀>
cdft(2*n, cos(M_PI/n), -sin(M_PI/n), a);
fft2f.f偺応崌
<応崌侾>
call cdft(2*n, cos(pi/n), sin(pi/n), a)
<応崌俀>
call cdft(2*n, cos(pi/n), -sin(pi/n), a)
fft4f.c偺応崌
<応崌侾>
ip[0] = 0; // 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
cdft(2*n, 1, a, ip, w);
<応崌俀>
ip[0] = 0; // 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
cdft(2*n, -1, a, ip, w);
fft4f.f偺応崌
<応崌侾>
ip(0) = 0 ! 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
call cdft(2*n, 1, a, ip, w)
<応崌俀>
ip(0) = 0 ! 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
call cdft(2*n, -1, a, ip, w)
[堷悢]
2*n : 僨乕僞挿(幚悢僨乕僞偵姺嶼偟偨挿偝)
宆 : 惍悢
徻嵶 : n 偼 1 埲忋偱俀偺儀僉忔偵慖傇丏
a : 擖弌椡僨乕僞
宆 : 攞惛搙幚悢宆攝楍
僒僀僘 : 0 偐傜 2*n-1 傑偱
徻嵶 : a[2*j], a[2*j+1] 偼偦傟偧傟 x[j] 傑偨偼
X[j] 偺幚晹, 嫊晹偵懳墳偡傞丏寢壥偼忋彂偒
偝傟傞丏Fortran偱偼堷悢偺宆傪僠僃僢僋偟側
偄偨傔丆攞惛搙暋慺悢宆攝楍傪偦偺傑傑堷悢
偵偱偒傞丏
ip : 價僢僩斀揮梡嶌嬈椞堟
宆 : 惍悢宆攝楍
僒僀僘 : 0 偐傜 1+sqrt(n) 傑偱(惓妋偵偼 1+sqrt(n)
偲 1+sqrt(n/2) 偺妱傝愗傟傞曽傑偱)
徻嵶 : ip[2...*] 偑嶌嬈椞堟偱丆ip[0], ip[1] 偼昞
偺娗棟僨乕僞(抣偺曄峏偼晄壜)偱偁傞丏
w : 嶰妏娭悢昞
宆 : 攞惛搙幚悢宆攝楍
僒僀僘 : 0 偐傜 n/2-1 傑偱
徻嵶 : 嶰妏娭悢昞偼 ip[0] 偑 0 偺偲偒偵弶婜壔偝
傟傞丏
[拲堄]
棧嶶Fourier曄姺/媡曄姺偺掕媊偲偟偰
応崌侾傪媡曄姺丆応崌俀偺1/n攞傪弴曄姺偲屇傇応崌丆
応崌侾傪弴曄姺丆応崌俀偺1/n攞傪媡曄姺偲屇傇応崌丆
応崌侾偺1/n攞傪媡曄姺丆応崌俀傪弴曄姺偲屇傇応崌丆
応崌侾偺1/n攞傪弴曄姺丆応崌俀傪媡曄姺偲屇傇応崌丆
偦偺懠丆
偑偁傞丏
仧幚棧嶶Fourier曄姺/媡曄姺 :
<応崌侾> (RDFT)
R[k] = 儼_j=0^n-1 a[j]*cos(2*兾*j*k/n), 0<=k<=n/2
I[k] = 儼_j=0^n-1 a[j]*sin(2*兾*j*k/n), 0<k<n/2
<応崌俀> (IRDFT)
A[k] = R[0]/2 + R[n/2]/2 +
儼_j=1^n/2-1 R[j]*cos(2*兾*j*k/n) +
儼_j=1^n/2-1 I[j]*sin(2*兾*j*k/n), 0<=k<n
傪媮傔傞丏
[彂幃]
fft2f.c偺応崌
<応崌侾>
rdft(n, cos(M_PI/n), sin(M_PI/n), a);
<応崌俀>
rdft(n, cos(M_PI/n), -sin(M_PI/n), a);
fft2f.f偺応崌
<応崌侾>
call rdft(n, cos(pi/n), sin(pi/n), a)
<応崌俀>
call rdft(n, cos(pi/n), -sin(pi/n), a)
fft4f.c偺応崌
<応崌侾>
ip[0] = 0; // 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
rdft(n, 1, a, ip, w);
<応崌俀>
ip[0] = 0; // 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
rdft(n, -1, a, ip, w);
fft4f.f偺応崌
<応崌侾>
ip(0) = 0 ! 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
call rdft(n, 1, a, ip, w)
<応崌俀>
ip(0) = 0 ! 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
call rdft(n, -1, a, ip, w)
[堷悢]
n : 僨乕僞挿
宆 : 惍悢
徻嵶 : n 偼 2 埲忋偱俀偺儀僉忔偵慖傇丏
a : 擖弌椡僨乕僞
宆 : 攞惛搙幚悢宆攝楍
僒僀僘 : 0 偐傜 n-1 傑偱
徻嵶 : 応崌侾偺弌椡
a[2*k] = R[k], 0<=k<n/2
a[2*k+1] = I[k], 0<k<n/2
a[1] = R[n/2]
応崌俀偺擖椡
a[2*j] = R[j], 0<=j<n/2
a[2*j+1] = I[j], 0<j<n/2
a[1] = R[n/2]
ip : 價僢僩斀揮梡嶌嬈椞堟
宆 : 惍悢宆攝楍
僒僀僘 : 0 偐傜 1+sqrt(n/2) 傑偱(惓妋偵偼 1+sqrt(n/2)
偲 1+sqrt(n/4) 偺妱傝愗傟傞曽傑偱)
徻嵶 : ip[2...*] 偑嶌嬈椞堟偱丆ip[0], ip[1] 偼昞
偺娗棟僨乕僞(抣偺曄峏偼晄壜)偱偁傞丏
w : 嶰妏娭悢昞
宆 : 攞惛搙幚悢宆攝楍
僒僀僘 : 0 偐傜 n/2-1 傑偱
徻嵶 : 嶰妏娭悢昞偼 ip[0] 偑 0 偺偲偒偵弶婜壔偝
傟傞丏
[拲堄]
惓妋偵偼丆応崌侾偺媡曄姺偼丆応崌俀偺曄姺偺 2/n 攞偱偁傞丏
仧棧嶶僐僒僀儞曄姺/媡曄姺 :
<応崌侾> (IDCT)
C[k] = 儼_j=0^n-1 a[j]*cos(兾*j*(k+1/2)/n), 0<=k<n
<応崌俀> (DCT)
C[k] = 儼_j=0^n-1 a[j]*cos(兾*(j+1/2)*k/n), 0<=k<n
傪媮傔傞丏
[彂幃]
fft2f.c偺応崌
<応崌侾>
ddct(n, cos(M_PI/n/2), sin(M_PI/n/2), a);
<応崌俀>
ddct(n, cos(M_PI/n/2), -sin(M_PI/n/2), a);
fft2f.f偺応崌
<応崌侾>
call ddct(n, cos(pi/n/2), sin(pi/n/2), a)
<応崌俀>
call ddct(n, cos(pi/n/2), -sin(pi/n/2), a)
fft4f.c偺応崌
<応崌侾>
ip[0] = 0; // 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
ddct(n, 1, a, ip, w);
<応崌俀>
ip[0] = 0; // 擇夞栚埲崀偺屇傃弌偟偵偼晄梫
ddct(n, -1, a, ip, w);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -