<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>http://wiki.ptt-lab.com/index.php?action=history&amp;feed=atom&amp;title=%E9%AB%98%E9%80%9F%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B</id>
	<title>高速フーリエ変換 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.ptt-lab.com/index.php?action=history&amp;feed=atom&amp;title=%E9%AB%98%E9%80%9F%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B"/>
	<link rel="alternate" type="text/html" href="http://wiki.ptt-lab.com/index.php?title=%E9%AB%98%E9%80%9F%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B&amp;action=history"/>
	<updated>2026-04-24T19:59:58Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>http://wiki.ptt-lab.com/index.php?title=%E9%AB%98%E9%80%9F%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B&amp;diff=329&amp;oldid=prev</id>
		<title>Ptt: ページの作成:「高速フーリエ変換は 離散フーリエ変換 を高速に計算するアルゴリズムである。 計算結果は 離散フーリエ変換 と同じになる。 だいたいFFTと呼ばれる。  == Cooley-Tukeyのアルゴリズム == &lt;math&gt;N&lt;/math&gt; が2の累乗の場合で考える。  === DFTの定義を整理する === まず離散フーリエ変換の定義を思い出しておく。  &lt;math&gt; X[k] = \sum ^{N-1}_{n=0} x[n] e^{-i\frac{2\pi k…」</title>
		<link rel="alternate" type="text/html" href="http://wiki.ptt-lab.com/index.php?title=%E9%AB%98%E9%80%9F%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B&amp;diff=329&amp;oldid=prev"/>
		<updated>2024-11-09T17:38:49Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「高速フーリエ変換は &lt;a href=&quot;/%E9%9B%A2%E6%95%A3%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B&quot; title=&quot;離散フーリエ変換&quot;&gt;離散フーリエ変換&lt;/a&gt; を高速に計算するアルゴリズムである。 計算結果は &lt;a href=&quot;/%E9%9B%A2%E6%95%A3%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B&quot; title=&quot;離散フーリエ変換&quot;&gt;離散フーリエ変換&lt;/a&gt; と同じになる。 だいたいFFTと呼ばれる。  == Cooley-Tukeyのアルゴリズム == &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; が2の累乗の場合で考える。  === DFTの定義を整理する === まず&lt;a href=&quot;/%E9%9B%A2%E6%95%A3%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B&quot; title=&quot;離散フーリエ変換&quot;&gt;離散フーリエ変換&lt;/a&gt;の定義を思い出しておく。  &amp;lt;math&amp;gt; X[k] = \sum ^{N-1}_{n=0} x[n] e^{-i\frac{2\pi k…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;高速フーリエ変換は [[離散フーリエ変換]] を高速に計算するアルゴリズムである。&lt;br /&gt;
計算結果は [[離散フーリエ変換]] と同じになる。&lt;br /&gt;
だいたいFFTと呼ばれる。&lt;br /&gt;
&lt;br /&gt;
== Cooley-Tukeyのアルゴリズム ==&lt;br /&gt;
&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; が2の累乗の場合で考える。&lt;br /&gt;
&lt;br /&gt;
=== DFTの定義を整理する ===&lt;br /&gt;
まず[[離散フーリエ変換]]の定義を思い出しておく。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
X[k] = \sum ^{N-1}_{n=0} x[n] e^{-i\frac{2\pi kn}{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
W_N = e^{-i\frac{2\pi}{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
とすれば、&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
X[k]&lt;br /&gt;
= \sum ^{N-1}_{n=0} x[n] W_N^{kn}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== k の偶奇で分ける ===&lt;br /&gt;
&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; の偶奇で分けて &amp;lt;math&amp;gt;k = 2d + b ~(0 \le d \lt \frac{N}{2}, 0 \le b \lt 2)&amp;lt;/math&amp;gt; とすると&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{eqnarray}&lt;br /&gt;
X[2d+b]&lt;br /&gt;
&amp;amp;=&amp;amp; \sum ^{N-1}_{n=0} x[n] W_N^{(2d+b)n}&lt;br /&gt;
\\ &amp;amp;=&amp;amp; \sum ^{N-1}_{n=0} x[n] W_N^{2dn}W_N^{bn}&lt;br /&gt;
\\ &amp;amp;=&amp;amp; \sum ^{N-1}_{n=0} x[n] W_{N/2}^{dn}W_{N}^{bn}&lt;br /&gt;
\end{eqnarray}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== nを半分ずつに分ける ===&lt;br /&gt;
こうすると、&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
W_N&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
の累乗が&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;周期であるのに対し、&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
W_{N/2}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
の累乗は&amp;lt;math&amp;gt;\frac{N}{2}&amp;lt;/math&amp;gt;周期である。&lt;br /&gt;
&lt;br /&gt;
そこで &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; を半分ずつに分ける。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{eqnarray}&lt;br /&gt;
X[2d+b]&lt;br /&gt;
&amp;amp;=&amp;amp; \sum ^{N-1}_{n=0} x[n] W_{N/2}^{dn}W_{N}^{bn}&lt;br /&gt;
\\ &amp;amp;=&amp;amp; \sum ^{N/2-1}_{n=0} x[n] W_{N/2}^{dn}W_{N}^{bn} + \sum ^{N-1}_{n=N/2} x[n] W_{N/2}^{dn}W_{N}^{bn}&lt;br /&gt;
\\ &amp;amp;=&amp;amp; \sum ^{N/2-1}_{n=0} x[n] W_{N/2}^{dn}W_{N}^{bn} + \sum ^{N/2-1}_{n=0} x[n+N/2] W_{N/2}^{d(n+N/2)}W_{N}^{b(n+N/2)}&lt;br /&gt;
\\ &amp;amp;=&amp;amp; \sum ^{N/2-1}_{n=0} x[n] W_{N/2}^{dn}W_{N}^{bn} + \sum ^{N/2-1}_{n=0} x[n+N/2] W_{N/2}^{dn}W_{N}^{b(n+N/2)}&lt;br /&gt;
\\ &amp;amp;=&amp;amp; \sum ^{N/2-1}_{n=0} (x[n]W_N^{bn} + x[n+N/2]W_N^{b(n+N/2)}) W_{N/2}^{dn}&lt;br /&gt;
\end{eqnarray}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FFT ===&lt;br /&gt;
こうして、&amp;lt;math&amp;gt;X[k]&amp;lt;/math&amp;gt;をもとの半分の長さのDFTで表すことができる。&lt;br /&gt;
&lt;br /&gt;
同じことを繰り返して計算量を O(NlogN) に削減できる。&lt;/div&gt;</summary>
		<author><name>Ptt</name></author>
	</entry>
</feed>