Форум: Выбор оборудования

Тема: Использование библиотеки Signal Processing Library

Вы не вошли.

 Поиск | Регистрация | Вход 

Виталий
01.12.2001 17:22:35
#1

Гость

Использование библиотеки Signal Processing Library

Если кто-нибудь использовал библиотеку Intel Signal Processing Library для спектрального анализа, пожалуйста, подскажите как решить проблему: имею массив значений типа float - оцифрованный сигнал. Для получения спектра использую функцию
   nspsRealFftNip(float *src, SCplx *dest, int order, NSP_Forw),
в результате имею спектр в виде массива комплексных чисел. Но в этой функции спектр вычисляется без 1/N - нормализации, и когда вычисляю амплитуды комплексных чисел спектра, они получаются на несколько порядков выше, чем амплитуды самого сигналы. Как провести 1/N-нормализацию комплексных чисел?

Vladimir
03.12.2001 15:51:18
#2

Гость

Re: Использование библиотеки Signal Processing Library

Виталий! Посмотри мой код, он реализован на основе примера для Delphi, поставляемого с библиотекой.

Screen.Cursor:=crHourGlass;
// копирую свои данные в массив
for i:=0 to LenSign-1 do AddP^[i]:=Data[NumSelectChan].PData^[i+X1];
// выбираю весовое окно
case ComboBoxTypeWin.ItemIndex of
   0: {None}
     ;
   1: {Bartlett}
     nspsWinBartlett(PFloat(AddP), LenSign);
   2: {Hann}
     nspsWinHann(PFloat(AddP), LenSign);
   3: {Hamming}
     nspsWinHamming(PFloat(AddP), LenSign);
   4: {Blackman}
     nspsWinBlackman(PFloat(AddP), LenSign, 2.0);
   5: {BlackmanStd}
     nspsWinBlackmanStd(PFloat(AddP), LenSign);
   6: {BlackmanOpt}
     nspsWinBlackmanOpt(PFloat(AddP), LenSign);
   7: {Kaiser}
     nspsWinKaiser(PFloat(AddP), LenSign, 0.5);
end;
// дополняю массив с концов нулями до длинны кратной степени 2
for i:=0 to LenFFT-1 do InpP^[i]:=0;
for i:=0 to LenFFT-1 do
  if (i > dLen) and (i < LenFFT-dLen) then InpP^[i]:=AddP^[i-dLen];
// непосредственно прямое БПФ
nspsRealFftNip(PFloat(InpP), PSCplx(FwdP), PowFFT, NSP_Forw);
// выбираю тип спектра
case ComboBoxTypeSpectr.ItemIndex of
  // амплитудный
  0: nspcbMag(PSCplx(FwdP), PFloat(PowP), LenFFT div 2);
  // мощности
  1: nspcbPowerSpectr(PSCplx(FwdP), PFloat(PowP), LenFFT div 2);
  // фазовый
  2: nspcbPhase(PSCplx(FwdP), PFloat(PowP), LenFFT div 2);
end;
// вывожу график спектра
Series2.Clear;
for i:=0 to (LenFFT div 2)-1 do Series2.Add(PowP^[i], /'/', clTeeColor);
for i:=0 to (LenFFT div 2)-1 do
  begin
   Series2.YValues.Value[i] := PowP^[i]/NormKoefFFT;
   Series2.XValues.Value[i] := i*dF;
  end;

Screen.Cursor:=crDefault;

Виталий
03.12.2001 16:49:39
#3

Гость

Re: Использование библиотеки Signal Processing Library

Все отлично, но что такое NormKoefFFT, и как его посчитать? Если это количество измерений в выбранном отрезке сигнала, то амплитуда спектра и амплитуда сигнала не сходятся. Например, синусоида, 25000 точек, амплитуда 5В, провожу БПФ, получаю на частоте сигнала значение 24000, если поделить на 25000, получится около 1В, но не как не 5В (остальными гармониками можно пренебречь). Почему?

Vladimir
03.12.2001 16:53:55
#4

Гость

Re: Использование библиотеки Signal Processing Library

Виталий!
Этот коэффициент выброси, т. к. это я нормирую амплитуду спектра в своих измерениях.

Mike
21.12.2001 14:55:30
#5

Гость

Re: Использование библиотеки Signal Processing Library

А может кто знает, где можно нарыть описание к этой библиотеки на русском языке.

Mik
14.01.2003 21:41:00
#6

Гость

Re: Использование библиотеки Signal Processing Library

Intel уже отказывает в скачке библиотеки.
Подскажите ссылочку , пожалуйста.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск