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

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

メソッド

すべて展開する

すべて折りたたむ

インストールされた特定の 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 で導入