A 回答 (20件中1~10件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>なぜ高速フーリエ変換はO(n*log n)で計算できるのでしょうか?
>どうか理由を詳しく教えて下さい。
「計算回数を激減できるバタフライ演算で計算する」から
です
https://oshiete.goo.ne.jp/qa/12836998.html
(*)「計算回数を激減できる」とはO(n²) を O(n*log n) にするという意味です。
usa3usa様、解答ありがとうございます。
では、O(n*log n)を展開したものがバタフライ演算という事でしょうか?
だとしたら、簡単なバタフライ演算からO(n*log n)を導くまでを教えて頂けないでしょうか?
また、O(n*log n)のOは何を表しているのでしょうか?
どうかよろしくお願い致します。
No.3
- 回答日時:
No2です
手を変え品を変え、同じ質問を何度もされているような気がしています
説明を何度も求めるのではなく、自分で「説明を生み出す努力」をしたほうが、納得できる説明が得られる気がします。
>どうか理由を詳しく教えて下さい。
→ 私はxxと考えましたが、「O(n*log n)で計算できる」という結論にたどり着けません。
といった質問であれば、どこでつまずいているのか一緒になって悩んで差し上げますよ。
<余談>
NxNの正方行列の行列式を、求める場合をバタフライ演算を使わずに計算する場合
次に1回バタフライ演算を使って計算する場合
2回バタフライ演算を使って計算する場合
:
1回バタフライ演算をするごとに、計算回数はどう変化するのか?
バタフライ演算は永遠に使うことができるのか?
これからは、少なくとも以上のことを自問自答してから、質問されたら良いと思います。
No.4
- 回答日時:
>ちなみに、O(n*log n)のOは何を表しているのでしょうか?
O記法(オーダー記法)のOです。計算にかかる時間とデータ量の関係について表した記法です。
https://note.com/strictlyes/n/n82d0a3874256
>のように8個の掛け算だけで済むように変形できる。これがバタフライ演算である」と考えたため、バタフライ演算からO(n*log n)が導けたのではないかと考えました。
あってますよ。
16回の掛け算が必要、8個の掛け算だけで済むといった具体的な数値をNに置き換えて、作文すればよいだけでは?
No.5
- 回答日時:
自分で質問した内容さえ理解してないというのは
先が長いね。
>あの「一段のバタフライの演算量はnに比例」に
>関してnとは何を表しているのですか?
nは処理前のデータの量。FFTではサンプルデータ数。
図はn=8の場合だけど、3段(=log[2]8)のバタフライ
で処理してる。
各段でバタフライの矢印数が変わらない事を確かめよう。
バタフライの演算量は矢印の数に比例する。
DFTが倍のDFTに分解されて行くのも図から一目瞭然だ。
解説ありがとうございます。
図まで載せて頂きありがとうございます。
ただ、少し理解できていないところがあるのですが、n=8の時に演算量は4回になるのに、なぜ矢印数の数は変わらないのでしょうか?
また、最後にn回のバタフライ演算の計算式からO(n*log n)の公式を導くまでの計算過程を教えて頂けないでしょうか?
No.6
- 回答日時:
>最後にn回のバタフライ演算の計算式からO(n*log n)の公式を導くまでの計算過程を教えて頂けないでしょうか?
だ・・か・・ら・・
説明を何度も求めるのではなく、自分で「説明を生み出す努力」をしましょう
N=8の場合を参考に、実際の高速フーリエ変換が使われる場合のNとして、例えば
N=256の場合
N=512の場合
N=1024の場合
を想定し、自分の頭をつかって、手を動かして紙に書いてやってみましょう。
この一連の作業を通して、
計算回数を激減できることを「体感」し、
激減の度合いを「定式化したいと感じ」てから、
O(n*log n)の公式を「導いて」みましょう。
No.7
- 回答日時:
>n=8の時に演算量は4回になるのに、
>なぜ矢印数の数は変わらないのでしょうか?
図を見れば一目瞭然だけど
名段でデ―タ数はずうっと8
各段でバタフライ数はずうっと4組
バタフライは2入力、2出力なんだから
当たり前。
ありがとうございます。
今更で申し訳ないのですが、
>> 「図を見れば一目瞭然だけど
名段でデ―タ数はずうっと8
各段でバタフライ数はずうっと4組
バタフライは2入力、2出力なんだから
当たり前。」
に関して、なぜ入力と出力の数値が同じなのに、n=8の時に演算量が4と異なるのでしょうか?
どうかよろしくお願い致します。
No.8
- 回答日時:
>ちなみに、画像の青い下線部の二つの式を組み合わせると水色で書かれた高速フーリエ変換の式(2)になると思うのですが、それ以前に青い下線部の二つの式はなんなのですか?
新な疑問は、別の質問とすることかな
脇道にそれずに、下記のA-Jを埋めれば、本件の質問の答えになるので、自分で「説明を生み出す努力」をしましょう
ーーーーーーーーーー
N=8の場合は、普通に計算すると_A_回の掛け算が必要だが、バタフライ演算を適応すると_B_回の掛け算で計算できる。
N=256の場合は、普通に計算すると_C_回の掛け算が必要だが、バタフライ演算を適応すると_D_回の掛け算で計算できる。
N=512の場合は、普通に計算すると_E_回の掛け算が必要だが、バタフライ演算を適応すると_F_回の掛け算で計算できる。
N=1024の場合は、普通に計算すると_G_回の掛け算が必要だが、バタフライ演算を適応すると_H_回の掛け算で計算できる。
以上のことから、一般にN=2^Kの場合は、普通に計算すると_I_回の掛け算が必要だが、バタフライ演算を適応すると_J_回の掛け算で計算できる。
すなわち、バタフライ演算を用いないとO(n^2)であるが、バタフライ演算を用いる高速フーリエ変換はO(n*log n)で計算できる。
ちなみに、nは処理前のデータの量として、nを8とした時の「バタフライ演算の回数」も「バタフライ演算を適応した場合の掛け算の回数」も4回なのでしょうか?
どうかよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) ラプラス変換とフーリエ変換の違いを教えて下さい! 4 2021/10/28 18:41
- 数学 この計算ができません。教えてください。 lim(b→∞)(2log|b|-log|b^2+1|) 3 2021/11/15 15:04
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- 数学 離散フーリエ逆変換が周波数分割数をNにできる理由について 4 2022/09/18 12:56
- 数学 高速フーリエ変換に関する質問です。 図はN=8の時のバタフライ演算でしょうか? 1 2022/03/31 19:30
- 数学 フーリエ変換に関して、質問があります。 画像の一枚目を2枚目の赤い下線部の式にするにはどうすれば良い 4 2022/09/05 06:11
- 数学 フーリエ変換、逆変換の「2π」の扱いについて 3 2022/10/07 08:31
- 数学 f(x)=e^(-ax+b) のフーリエ変換をフーリエ変換の定義に従って計算せよ。但し、a>0、bは 1 2023/02/06 18:26
- 高校 物理基礎 弾性エネルギーに質量mが含まれてない理由について 2 2021/10/30 20:36
- 数学 情報エントロピーの一様分布のシグマ計算 5 2023/09/04 12:54
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
logeの計算
-
10の0.3乗って??
-
1/2+1/4+1/6+……+1/(2n)が発散
-
log(-2)の求め方
-
2の50乗を簡単に概算出来る方...
-
常用対数についての問題です。7...
-
積分・・・数列??
-
mathematicaの特殊関数productl...
-
小数点以下の乗倍数について。
-
べき乗とはなんでしょうか? 数...
-
2009年度の関西大の入試問題(...
-
べき乗関数の回帰式の95%信頼区間
-
級数の計算
-
ログを使う計算式をエクセルで...
-
平均情報量を求める問題ですが...
-
物理の計算で×10^3とかするのは...
-
対数の計算について。 下記の計...
-
なぜ高速フーリエ変換はO(n*log...
-
関数電卓でlog2=とおすと、0.3...
-
0.5時間などの時間計算の方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
logeの計算
-
10の0.3乗って??
-
2の50乗を簡単に概算出来る方...
-
2のN乗が10の場合、手計算で...
-
得点率について
-
1/2+1/4+1/6+……+1/(2n)が発散
-
262144って2の何乗でしょうか?
-
【経済】毎年3%ずつ成長率が上...
-
分数の場合のlogの計算の仕方が...
-
log(-2)の求め方
-
物理の計算で×10^3とかするのは...
-
べき乗とはなんでしょうか? 数...
-
∮x ^2/x-1 dxの計算結果につい...
-
常用対数についての問題です。7...
-
√(55000/n)が整数になるとき...
-
小数点以下の乗倍数について。
-
数学の口頭試問具体例を教えて...
-
乗数計算がわかりません
-
2を何乗したら2億を超えるか
-
情報エントロピーの一様分布の...
おすすめ情報
わたしは 「X0 = f0・W^0 + f1・W^0 + f2・W^0 + f3・W^0
X1 = f0・W^0 + f1・W^1 + f2・W^2 + f3・W^3
X2 = f0・W^0 + f1・W^2 + f2・W^4 + f3・W^6
X3 = f0・W^0 + f1・W^3 + f2・W^6 + f3・W^9
となるがW^(km)の性質から
X0 = f0・W^0 + f1・W^0 + f2・W^0 + f3・W^0
X1 = f0・W^0 + f1・W^1 - f2・W^0 - f3・W^1
X2 = f0・W^0 - f1・W^0 + f2・W^0 - f3・W^0
X3 = f0・W^0 - f1・W^1 - f2・W^0 + f3・W^1
と簡単になる。しかし、これでも16回の掛け算が必要なのは変わらない。そこで上の式を奇数行と偶数行に分けた。
X0 = f0・W^0 + f1・W^0 + f2・W^0 + f3・W^0
X2 = f0・W^0 - f1・W^0 + f2・W^0 - f3・W^0
X1 = f0・W^0 + f1・W^1 - f2・W^0 - f3・W^1
X3 = f0・W^0 - f1・W^1 - f2・W^0 + f3・W^1
ここからは上の展開式を行列で表さないとわかりにくいのだが、メンドーなので省略する。
とにかく上のように行を入れ替えると
X0 = W^0(f0+f2) + W^0(f1+f3)
X2 = W^0(f0+f2) - W^0(f1+f3)
X1 = W^0(f0-f2) + W^1(f1-f3)
X3 = W^0(f0-f2) - W^1(f1-f3)
のように8個の掛け算だけで済むように変形できる。これがバタフライ演算である」と考えたため、バタフライ演算からO(n*log n)が導けたのではないかと考えました。
ちなみに、画像の青い下線部の二つの式を組み合わせると水色で書かれた高速フーリエ変換の式(2)になると思うのですが、それ以前に青い下線部の二つの式はなんなのですか?
図はn=8の場合だけど、3段(=log[2]8)のバタフライ
(3回の計算)で処理してる。と言われたのですが
3段ではなく4段ではないでしょうか?
なるほど、nは処理前のデータの量で、nを8とした時のバタフライ演算の回数が4回だと解りました。
usa3usa様、
編集致します。
「nは処理前のデータの量で、nを8とした時のバタフライ演算の回数が4回」
ではなく、正しくは
「nは処理前のデータの量で、nを8とした時のバタフライ演算を適応した場合の掛け算の回数が4回」
という事でしょうか?
また、
バタフライ演算を適応した場合の掛け算の回数は画像のどの部分を表しているのでしょうか?
4回と出したのは画像より、赤で囲まれたバタフライ演算の回数が4回のバタフライ演算を行っているため4回と書きました。
なるほど、
「
図から明らかなように、処理するデータ数が N = 8 の時より
第1ステージ(1段目)の N = 8 のバタフライ演算は1組
1組の乗算回数は4回だから計1×4=4回
第2ステージ(2段目)の N = 4 のバタフライ演算は2組
1組の乗算回数は2回だから計2×2=4回
第3ステージ(3段目)の N = 2 のバタフライ演算が4組
1組の乗算回数は1回だから計4×1=4回
だから、バタフライ演算の乗算回数の合計は12回。」
この各段のバタフライ演算の乗算回数を素早く求めるためにO(Nlog(N))(N=8の時、乗算回数は8log(8)=12、すなわち乗算回数は12回)を作ったのですね。
そのため、「バタフライ演算を適応した場合の掛け算の回数」が12回とわかりました。
以前私が言っていた「バタフライ演算の回数が4回」とは画像より各段のバタフライ演算のそれぞれの乗算回数の計が4回を表しているのだとわかりました。
合っていますでしょうか?