exponenta event banner

coder.fftw.StandaloneFFTW3Interface класс

Пакет: coder.fftw
Суперклассы:

Абстрактный класс для указания библиотеки FFTW для вызовов FFTW в сгенерированном коде

Описание

coder.fftw.StandaloneFFTW3Interface является абстрактным классом для определения класса обратного вызова библиотеки FFT. Класс обратного вызова библиотеки FFT определяет библиотеку FFT, используемую для кода C/C + +, созданного для функций быстрого преобразования Фурье MATLAB ®. Чтобы определить класс обратного вызова FFT для библиотеки FFTW версии 3.2 или более поздней, используйте coder.fftw.StandaloneFFTW3Interface класс. Например, чтобы определить класс обратного вызова библиотеки FFT с именем useMyFFTW, сделайте эту строку первой строкой файла определения класса:

classdef useMyFFTW < coder.fftw.StandaloneFFTW3Interface
Сведения о библиотеке FFTW см. в разделе www.fftw.org.

Функции быстрого преобразования Фурье MATLAB включают fft, fft2, fftn, ifft, ifft2, и ifftn. Генератор кода создает вызовы библиотеки FFTW для этих функций, когда выполняются все эти условия:

  • Создается автономный код C/C + + (статическая библиотека, динамически связанная библиотека или исполняемая программа) с помощью MATLAB Coder™ или код C/C + + из функционального блока MATLAB с помощью Simulink ® Coder.

  • У вас есть доступ к установке библиотеки FFTW версии 3.2 или более поздней.

  • Установка библиотеки FFTW задается в классе обратного вызова библиотеки FFT, производном от coder.fftw.StandaloneFFTW3Interface.

  • Для соответствующего параметра конфигурации устанавливается имя класса обратного вызова.

    • Для генерации кода с помощью кодера MATLAB codegen команда, установка CustomFFTCallback.

    • Для создания кода с помощью приложения MATLAB Coder установите обратный вызов пользовательской библиотеки FFT.

    • Для генерации кода для функционального блока MATLAB с помощью Simulink Coder установите обратный вызов пользовательской библиотеки FFT.

Необходимо внедрить updateBuildInfo и getNumThreads методы.

Дополнительно можно реализовать следующие методы:

  • getPlanMethod

  • lock и unlock

Все методы статичны.

Методы

getNumThreads Количество потоков, используемых для вызовов библиотеки FFTW
getPlanMethodВозврат метода планирования FFTW
замок Блокировка доступа к планированию FFTW
открыть Разблокирование доступа к планированию 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 к полному пути для установки библиотеки.

    • includePath к полному пути к папке, содержащей fftw3.h.

    • libPath в полный путь к папке, содержащей файлы библиотеки.

Представлен в R2017b