Main Content

coder.fftw.StandaloneFFTW3Interface クラス

パッケージ: coder.fftw
スーパークラス:

生成されたコード内で FFTW 呼び出しに対して FFTW ライブラリを指定する抽象クラス

説明

coder.fftw.StandaloneFFTW3Interface は FFT ライブラリ コールバック クラスを定義するための抽象クラスです。FFT ライブラリ コールバック クラスは、MATLAB® 高速フーリエ変換関数用に生成された C/C++ コードで使用する FFT ライブラリを指定します。FFTW ライブラリの FFT コールバック クラスを定義するには、Version 3.2 以降で coder.fftw.StandaloneFFTW3Interface クラスを使用します。たとえば、useMyFFTW という名前の FFT ライブラリ コールバック クラスを定義するには、クラス定義ファイルの 1 行目に次のコードを記述します。

classdef useMyFFTW < coder.fftw.StandaloneFFTW3Interface
FFTW ライブラリの詳細については、www.fftw.org を参照してください。

MATLAB 高速フーリエ変換関数には fftfft2fftnifftifft2ifftn が含まれます。次の条件がすべて真の場合、コード ジェネレーターはこれらの関数に対して FFTW ライブラリの呼び出しを生成します。

  • MATLAB Coder™ を使用してスタンドアロンの C/C++ コード (スタティック ライブラリ、ダイナミック リンク ライブラリ、または実行可能プログラム) を生成するか、Simulink® Coder を使用して MATLAB Function ブロックから C/C++ コードを生成する。

  • FFTW ライブラリのインストール (Version 3.2 以上) にアクセスできる。

  • coder.fftw.StandaloneFFTW3Interface から派生する FFT ライブラリ コールバック クラスで FFTW ライブラリ インストールを指定する。

  • 適切な構成パラメーターをコールバック クラスの名前に設定する。

    • MATLAB Codercodegen コマンドを使用したコード生成の場合、CustomFFTCallback を設定する。

    • MATLAB Coder アプリを使用したコード生成の場合、[カスタム FFT ライブラリのコールバック] を設定する。

    • Simulink Coder を使用した MATLAB Function ブロックのコード生成の場合、[カスタム FFT ライブラリのコールバック] を設定する。

updateBuildInfo メソッドと getNumThreads メソッドを実装しなければなりません。

必要に応じて、次のメソッドを実装することができます。

  • getPlanMethod

  • lock および unlock

すべて静的メソッドです。

メソッド

getNumThreads FFTW ライブラリの呼び出しに使用するスレッド数を返す
getPlanMethodFFTW プラン メソッドを返す
lock FFTW 計画へのアクセスをロックする
unlock FFTW 計画へのアクセスをロック解除する
updateBuildInfo 特定の FFTW ライブラリにリンクするためのビルド情報を更新する

すべて折りたたむ

インストールされた特定の FFTW ライブラリを FFT ライブラリ コールバック クラスで指定します。

この例の FFT ライブラリ コールバック クラスをテンプレートとして使用します。

% copyright 2017 The MathWorks, Inc.

classdef useMyFFTW < coder.fftw.StandaloneFFTW3Interface
     
    methods (Static)
        function th = getNumThreads
            coder.inline('always');
            th = int32(coder.const(1));
        end
                
        function updateBuildInfo(buildInfo, ctx)
            fftwLocation = '/usr/lib/fftw';
            includePath = fullfile(fftwLocation, 'include');
            buildInfo.addIncludePaths(includePath);
            libPath = fullfile(fftwLocation, 'lib');
            
            %Double
            libName1 = 'libfftw3-3';
            [~, libExt] = ctx.getStdLibInfo();
            libName1 = [libName1 libExt];
            addLinkObjects(buildInfo, libName1, libPath, 1000, true, true);
            
            %Single
             libName2 = 'libfftw3f-3';
            [~, libExt] = ctx.getStdLibInfo();
            libName2 = [libName2 libExt];
            addLinkObjects(buildInfo, libName2, libPath, 1000, true, true);
        end
    end           
end

テンプレートを変更します。

  • useMyFFTW をコールバック クラスの名前に置き換えます。

  • FFTW のインストールで複数のスレッドを使用する場合、使用するスレッド数を返すように getNumThreads メソッドを変更します。

  • updateBuildInfo メソッドで、次のように設定します。

    • fftwLocation に、ライブラリのインストール場所の絶対パスを設定する。

    • includePathfftw3.h を格納するフォルダーの絶対パスに設定する。

    • libPath に、ライブラリ ファイルが格納されるフォルダーの絶対パスを設定する。

バージョン履歴

R2017b で導入