C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■91933 / 14階層)  C++からVBへの変換
□投稿者/ 魔界の仮面弁士 (2296回)-(2019/08/10(Sat) 16:23:56)
2019/08/10(Sat) 16:26:50 編集(投稿者)

No91932 (774RR さん) に返信
> FFT なんぞテキトーに探せばいくらでもライブラリが転がっているような気のせいがする。

この辺にありそうな気がします。確認はしていませんけど。
https://www.nuget.org/packages?q=fft

VB.NET に移植済みの実装が欲しいという話なら、こんなのもあります。
http://numeric.world.coocan.jp/computer/vb/mathpack.htm

Excel VBA でも良ければこんなのもありました。
関数化はされていないものの、再帰処理を用いないフラットな実装。
http://tsuyu.cocolog-nifty.com/blog/2007/03/publi.html


真面目に再実装する気があるなら、複素数構造体を併用すると良いかもしれません。
https://docs.microsoft.com/ja-jp/dotnet/api/system.numerics.complex.frompolarcoordinates

複素数構造体を用いた実装例は下記にありました。
F# なので参考にはしにくいかもしれませんが。
http://www.fssnip.net/dC/title/fast-Fourier-transforms-FFT-



No91927 (えんえん さん) に返信
> For r As Integer = 0 To n - 1 Step n_radix
>   fft(n_radix, theta * radix, tmpr, tmpi, ar, ai, r_st + r)
> Next r
> としてみましたが、
> それでも、やはり正しい結果は得られないのですが、なぜでしょうか?

オリジナル版にある
 fft(n_radix, theta * radix, &tmpr[r], &tmpi[r], ar, ai);
ってのは
 fft(n_radix, theta * radix, &tmpr[r], &tmpi[r], &ar[0], &ai[0]);
でもあるわけですし、再帰で tmpX と aX が入れ替わる点が肝かと思います。

すなわち、index の offset は r_st 一つでは足りなくて、
a 系と tmp 系の両方に対して用意すべきかと思います。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[13]: C++からVBへの変換 /774RR →Re[15]: C++からVBへの変換 /えんえん
 
上記関連ツリー

C++からVBへの変換 / えんえん (19/08/08(Thu) 22:51) #91899
Re[1]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/08(Thu) 23:48) #91900
  └ Re[2]: C++からVBへの変換 / えんえん (19/08/09(Fri) 10:36) #91905
    └ Re[3]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/09(Fri) 12:18) #91906
      └ Re[4]: C++からVBへの変換 / えんえん (19/08/09(Fri) 12:28) #91907
        └ Re[5]: C++からVBへの変換 / Hongliang (19/08/09(Fri) 12:46) #91908
          └ Re[6]: C++からVBへの変換 / ぶなっぷ (19/08/09(Fri) 13:05) #91909
            └ Re[7]: C++からVBへの変換 / えんえん (19/08/09(Fri) 13:12) #91910
              ├ Re[8]: C++からVBへの変換 / Hongliang (19/08/09(Fri) 13:18) #91911
              │└ Re[9]: C++からVBへの変換 / えんえん (19/08/09(Fri) 13:23) #91912
              │  └ Re[10]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/09(Fri) 17:42) #91917
              └ Re[8]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/09(Fri) 13:54) #91913
                └ Re[9]: C++からVBへの変換 / えんえん (19/08/10(Sat) 07:13) #91924
                  └ Re[10]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/10(Sat) 09:41) #91925
                    └ Re[11]: C++からVBへの変換 / えんえん (19/08/10(Sat) 10:16) #91927
                      └ Re[12]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/10(Sat) 14:19) #91930
                        └ Re[13]: C++からVBへの変換 / 774RR (19/08/10(Sat) 15:02) #91932
                          ├ C++からVBへの変換 / 魔界の仮面弁士 (19/08/10(Sat) 16:23) #91933 ←Now
                          │└ Re[15]: C++からVBへの変換 / えんえん (19/08/11(Sun) 21:42) #91934
                          │  └ Re[16]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/12(Mon) 12:05) #91938
                          │    ├ Re[17]: C++からVBへの変換 / えんえん (19/08/12(Mon) 14:12) #91939
                          │    │├ Re[18]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/12(Mon) 16:25) #91940
                          │    │├ Re[18]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/12(Mon) 17:33) #91942
                          │    │└ Re[18]: C++からVBへの変換 / 774RR (19/08/12(Mon) 16:56) #91941
                          │    └ Re[17]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/13(Tue) 01:00) #91946
                          └ Re[14]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/12(Mon) 22:51) #91944
                            └ Re[15]: C++からVBへの変換 / えんえん (19/08/13(Tue) 11:01) #91947

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信