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

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

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

Re[7]: Cのライブラリ[FFTW]をC#で用いる方法


(過去ログ 73 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■42615 / inTopicNo.1)  Cのライブラリ[FFTW]をC#で用いる方法
  
□投稿者/ mits (1回)-(2009/10/19(Mon) 13:24:10)

分類:[C#] 

現在、Visual C# 2008で画像処理のプログラムを組んでいます。
その処理の一つにフーリエ変換を組もうと思ったのですが、流石に通常のフーリエ変換では時間がかかるので高速フーリエ変換を組もうと思いました。
しかし、自分で組むよりもライブラリを使用した方がいいだろうということでフリーの高速フーリエ変換ライブラリFFTWを用いようと思ったのですが、
FFTWはC言語ライブラリであり、構造体のポインタとかを使用していて、単純にDllimportしただけでは使えないことが分かりました。
どなたかFFTWをC#で使用する方法をご教授願えませんでしょうか。


引用返信 編集キー/
■42616 / inTopicNo.2)  Re[1]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ επιστημη (2211回)-(2009/10/19(Mon) 13:34:23)
επιστημη さんの Web サイト
> FFTWはC言語ライブラリであり、構造体のポインタとかを使用していて、単純にDllimportしただけでは使えないことが分かりました。
> どなたかFFTWをC#で使用する方法をご教授願えませんでしょうか。

C++/CLIに仲介させてはいかがでしょ。家賃のひと月分くらいで。

引用返信 編集キー/
■42631 / inTopicNo.3)  Re[1]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ オショウ (348回)-(2009/10/19(Mon) 17:47:22)
No42615 (mits さん) に返信
> 現在、Visual C# 2008で画像処理のプログラムを組んでいます。
> その処理の一つにフーリエ変換を組もうと思ったのですが、流石に通常のフーリエ変換では時間がかかるので高速フーリエ変換を組もうと思いました。
> しかし、自分で組むよりもライブラリを使用した方がいいだろうということでフリーの高速フーリエ変換ライブラリFFTWを用いようと思ったのですが、
> FFTWはC言語ライブラリであり、構造体のポインタとかを使用していて、単純にDllimportしただけでは使えないことが分かりました。
> どなたかFFTWをC#で使用する方法をご教授願えませんでしょうか。

  FFT、逆FFTは、FAのソフト屋でも必須なので、その都度?
  必要なケースに合わせて作ってますが・・・

  さてどんなアルゴリズなのか・・・

  http://www.hotdocs.jp/file/7777

  これから察するに、言語的な影響は少ないように見受けられます。
  極論を言うと、コードの書き方(アルゴリズム)が悪い・・・

  http://csharpimage.blog60.fc2.com/blog-entry-12.html

  こんなものもあります。

以上。参考まで・・・
引用返信 編集キー/
■42695 / inTopicNo.4)  Re[2]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ mits (2回)-(2009/10/20(Tue) 13:03:37)
No42631 (オショウ さん) に返信
> ■No42615 (mits さん) に返信
>>現在、Visual C# 2008で画像処理のプログラムを組んでいます。
>>その処理の一つにフーリエ変換を組もうと思ったのですが、流石に通常のフーリエ変換では時間がかかるので高速フーリエ変換を組もうと思いました。
>>しかし、自分で組むよりもライブラリを使用した方がいいだろうということでフリーの高速フーリエ変換ライブラリFFTWを用いようと思ったのですが、
>>FFTWはC言語ライブラリであり、構造体のポインタとかを使用していて、単純にDllimportしただけでは使えないことが分かりました。
>>どなたかFFTWをC#で使用する方法をご教授願えませんでしょうか。
>
>   FFT、逆FFTは、FAのソフト屋でも必須なので、その都度?
>   必要なケースに合わせて作ってますが・・・
>
>   さてどんなアルゴリズなのか・・・
>
>   http://www.hotdocs.jp/file/7777
>
>   これから察するに、言語的な影響は少ないように見受けられます。
>   極論を言うと、コードの書き方(アルゴリズム)が悪い・・・
>
>   http://csharpimage.blog60.fc2.com/blog-entry-12.html
>
>   こんなものもあります。
>
> 以上。参考まで・・・
FFTは色々なバージョンがあるのですが、もっともよく使われているCooley-Tukey型FFTアルゴリズムではデータ数が2^Nでないといけないという制約があるのもFFTWを用いようと思った理由の一つなのです。
一応Cooley-Tukey型FFTアルゴリズムなら自分でも組めると思うのですが、流石にFFTWの用いているアルゴリズムと同等のものを自分で組むのは難しいのです。
そこでなんとかFFTWをC#で使えるようにしたいと思って質問いたしました。
引用返信 編集キー/
■42696 / inTopicNo.5)  Re[2]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ mits (3回)-(2009/10/20(Tue) 13:04:24)
No42616 (επιστημη さん) に返信
>>FFTWはC言語ライブラリであり、構造体のポインタとかを使用していて、単純にDllimportしただけでは使えないことが分かりました。
>>どなたかFFTWをC#で使用する方法をご教授願えませんでしょうか。
>
> C++/CLIに仲介させてはいかがでしょ。家賃のひと月分くらいで。
>
すみません、仲介のさせ方が分かりません…
引用返信 編集キー/
■42698 / inTopicNo.6)  Re[3]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ επιστημη (2213回)-(2009/10/20(Tue) 13:14:09)
επιστημη さんの Web サイト
>>C++/CLIに仲介させてはいかがでしょ。家賃のひと月分くらいで。
> すみません、仲介のさせ方が分かりません…

C#から呼べるクラス/メソッドをC++/CLIで作ります。
んでもってC++/CLIで用意したメソッド内からFFTWを呼びます。
# おべんきょせずにつかえるもんじゃありませんて。


引用返信 編集キー/
■42712 / inTopicNo.7)  Re[4]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ mits (4回)-(2009/10/20(Tue) 14:45:49)
No42698 (επιστημη さん) に返信
> >>C++/CLIに仲介させてはいかがでしょ。家賃のひと月分くらいで。
>>すみません、仲介のさせ方が分かりません…
>
> C#から呼べるクラス/メソッドをC++/CLIで作ります。
> んでもってC++/CLIで用意したメソッド内からFFTWを呼びます。
> # おべんきょせずにつかえるもんじゃありませんて。
>

えっと、要するに構造体のポインタなどの問題が発生するのはC#上での話だから、そういった処理をC++/CLIでメソッドとして作ってそれを呼び出せば大丈夫、ということでしょうか?
引用返信 編集キー/
■42713 / inTopicNo.8)  Re[5]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ επιστημη (2217回)-(2009/10/20(Tue) 14:52:50)
επιστημη さんの Web サイト
> えっと、要するに構造体のポインタなどの問題が発生するのはC#上での話だから、
> そういった処理をC++/CLIでメソッドとして作ってそれを呼び出せば大丈夫、ということでしょうか?

そです。C++/CLI にnamaged(C#)とnative(C/C++)の仲介をやらせます。

引用返信 編集キー/
■42714 / inTopicNo.9)  Re[3]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ 倉田 有大 (745回)-(2009/10/20(Tue) 14:53:19)
>えっと、要するに構造体のポインタなどの問題が発生するのはC#上での話だから、そういった処理をC++/CLIでメソッドとして作ってそれを呼び出せば大丈夫、ということでしょうか?

ようするに、C++→C++/CLI→C# にすると楽だよーってことっす。

επιστημη さんが、詳しい記事書いてましたよ。

あれ、どこだっけ?
さがしてみる。

http://www.atmarkit.co.jp/fdotnet/special/vcppinvista01/vcppinvista01_01.html
これだったかな
引用返信 編集キー/
■42724 / inTopicNo.10)  Re[4]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ επιστημη (2218回)-(2009/10/20(Tue) 17:24:15)
επιστημη さんの Web サイト
ちゃっちゃか書いてみました。さっくし動いた。
あとでどっかにUPするね♪

/*
 * つかってみた:名前空間 FFTW にあるもんが C++/CLI でこさえたもん。
 */
using System;

namespace FFTWtest
{
    class Program
    {
        static void Main(string[] args)
        {
            const int N = 500;
            FFTW.dft1d fft = new dft1d(N, true);
            FFTW.complex[] data = new FFTW.complex[500];
            for ( int i = 0; i < N; ++i ) {
                data[i].real = (double)(i%100-50);
                data[i].imag = 0.0;
            }
            FFTW.complex[] result = fft.execute(data);
            foreach (complex item in result)
            {
                Console.WriteLine("{0},{1},{2}", 
                                  item.real, item.imag,
                                  Math.Sqrt(item.real*item.real+item.imag*item.imag));
            }
        }
    }
}

引用返信 編集キー/
■42747 / inTopicNo.11)  Re[5]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ επιστημη (2219回)-(2009/10/20(Tue) 23:26:41)
επιστημη さんの Web サイト
> あとでどっかにUPするね♪

http://cid-07c558f8e11e708f.skydrive.live.com/self.aspx/WillBeRemovedSoon/FFTW.zip

1次元FFT complex→complex ですなり。


引用返信 編集キー/
■42766 / inTopicNo.12)  Re[6]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ επιστημη (2224回)-(2009/10/21(Wed) 09:02:55)
επιστημη さんの Web サイト
2009/10/21(Wed) 09:06:25 編集(投稿者)

FFTWのサイトながめてたら...あるぢゃーん

■C# and .NET wrappers from the ILNumerics project
http://ilnumerics.net/

■C# wrappers of FFTW are available from Tamas Szalay.
http://www.sdss.jhu.edu/~tamas/bytes/fftwcsharp.html

んでも面白かったので許すw
ちょっといいネタをもらった気がします。
# CodeZineにでも書いてみよかしら

引用返信 編集キー/
■42771 / inTopicNo.13)  Re[7]: Cのライブラリ[FFTW]をC#で用いる方法
□投稿者/ mits (5回)-(2009/10/21(Wed) 10:18:57)
No42766 (επιστημη さん) に返信
> 2009/10/21(Wed) 09:06:25 編集(投稿者)
>
> FFTWのサイトながめてたら...あるぢゃーん
>
> ■C# and .NET wrappers from the ILNumerics project
> http://ilnumerics.net/
>
> ■C# wrappers of FFTW are available from Tamas Szalay.
> http://www.sdss.jhu.edu/~tamas/bytes/fftwcsharp.html
>
> んでも面白かったので許すw
> ちょっといいネタをもらった気がします。
> # CodeZineにでも書いてみよかしら
>
ありがとうございます!
お手数かけてすみませんでした。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -