кодер. fftw. Класс StandaloneFFTW3Interface

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

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

Описание

coder.fftw.StandaloneFFTW3Interface является абстрактным классом для определения класса обратного вызова библиотеки FFT. Класс обратного вызова библиотеки FFT задает библиотеку FFT, чтобы использовать для кода C/C++, сгенерированного для функций быстрого преобразования Фурье MATLAB®. Чтобы задать класс обратного вызова БПФа для библиотеки 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 function с Simulink® Coder.

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

  • Вы задаете установку библиотеки FFTW в классе обратного вызова библиотеки FFT, который выводит от coder.fftw.StandaloneFFTW3Interface.

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

    • Для генерации кода с MATLAB CODER команда codegen, набор CustomFFTCallback.

    • Для генерации кода с приложением MATLAB CODER, обратным вызовом библиотеки Custom FFT набора.

    • Для генерации кода для блока MATLAB function при помощи Simulink Coder, обратного вызова библиотеки Custom FFT набора.

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

Опционально, можно реализовать эти методы:

  • 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 h.

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

Введенный в R2017b

Была ли эта тема полезной?