вторник, 3 июня 2014 г.

Прямое и обратное БПФ. Описание API вызова библиотеки FFTR.DLL

Данная библиотека (далее DLL) предназначена для расчета спектра методом БПФ (быстрого преобразования Фурье), прямого и обратного. DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32/64. Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.



Таблица расшифровок параметров экспортируемой функции fftio() библиотеки 'FFTR.DLL':


Пример динамического подключения (Delphi 6/7/2006/2007/2009/2010/TDL/XE5-7):
var

    fftio:function(var buf: array of single;
                   nf: integer;
                   directfft: Boolean
                   ): pansichar; stdcall; LibHandle: THandle; 

function LinkProc(h: thandle; ProcName: string):Pointer;
begin
 result:= GetProcAddress(h, PChar(ProcName))
end;

{ инициализация }
begin
 // подключаем DLL
 LibHandle:= LoadLibrary('FFTR.dll');
 if LibHandle<>0 then
  fftio:= LinkProc(LibHandle, 'fftio');
end;

{ пример вызова }
begin
 // прямое БПФ на 1024 точки
 fftio(fDataBuf, 1024, true);

 // обратное БПФ на 1024 точки
 fftio(fDataOutBuf, 1024, false);

ПОРЯДОК ИСПОЛЬЗОВАНИЯ и ОГРАНИЧЕНИЯ

В демо-примере осуществлен захват аудиоданных и визуализация:
  1. R - отрисовка спектра (FFT) с пересчетом в реальные частоты и амплитуды в дБ
  2. G - отрисовка сырых отсчетов (осциллограмма)
  3. B - отрисовка восстановленных данных после FFT и IFFT (осциллограмма)
Прикладное применение библиотеки

Построение спектров сердечного ритма:

 

Демонстрация питч-шифтинга для подавления акустической обратной связи (прямое БПФ, сдвиг частот, обратное БПФ):
 

Работа в составе анализатора спектра на базе чипа RTL-2832 DVB-T тюнера (см. API_RTL_SDR):




Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.