0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 6
1

БПФ. Cоответствие частоты после преобразования

09.03.2014, 21:07. Показов 2303. Ответов 4
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста разобраться. Я сделал быстрое преобразование фурье над массивом полученным из простейших тригонометрических функций или их произведения и сложения, получил массив по которому я могу построить спектр, но как мне теперь сделать так чтобы каждая точка полученного массива соответствовала частоте?

Вот код, поможет прояснить

Кликните здесь для просмотра всего текста

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
procedure TForm1.btn1Click(Sender: TObject);
var i:SmallInt;
begin
  for i:=0 to 128-1 do //генерация тестового сигнала
    begin
     fDataBuf[i] := F(i)*2*F(i*8);
    end;
  MakeFFT();
  DrawFFT();
  tmr1.Enabled:=True;
end;
 
procedure TForm1.MakeFFT;
var
 fftb: TFFTBase; //класс, который реализует БПФ
 fFFTComplBuf: ^TComplexArray;  //Буфер для хранения комплексных величин
 i: integer;
begin
 GetMem(fFFTComplBuf, 128*SizeOf(TComplex)); //Выделение памяти под массив
 for i:=0 to 128-1 do //Заполняем данными массив
  begin
   fFFTComplBuf[i].Re := fDataBuf[i];
   fFFTComplBuf[i].Im := 0;
  end;
 fftb:=TFFTBase.Create(nil);
 
 
fftb.FFT(Pointer(fFFTComplBuf), 128, 7, False, 0);
 for i:=0 to 128-1 do //Переносим результат БПФ в исходный массив
  begin
   fDataBuf[i] := Round(fFFTComplBuf[i].Re / 500);
  end;
 fftb.Free;
 FreeMem(fFFTComplBuf, 128*SizeOf(TComplex)); //Освобождение памяти выделенной под массив
end;
 
function TForm1.F(t: SmallInt): SmallInt;
begin
 F:=Round(10000*sin(2*Pi*2000*t/180));
end;
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2014, 21:07
Ответы с готовыми решениями:

БПФ бинарного сигнала, поиск частоты и фазы
Вляпался по неосторожности в ЦОС, совсем не мою область. Есть светодиод. Он мигает с частотой...

Определение доминантной несущей частоты в числовом ряде (БПФ, автокорреляция)
Добрый день, в зарубежной литературе встретил приведенный ниже код для определения доминантной...

БПФ с использованием AForge.NET: ошибка при применении преобразования
Вообщем программа до невозможного проста: Загружаю изображение, делаю БПФ над ним с помощью...

Отделить верхние и нижние частоты в звуковом файле с помощью преобразования Фурье
Доброго времени суток, коллеги. Для себя начал изучение MatLab. Очень интересна тема с работой...

4
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,161
Записей в блоге: 1
09.03.2014, 21:15 2
...умножать каждый i-индекс полученного набора после FFT на частоту дискретизации сигнала деленное на количество точек FFT.

Добавлено через 2 минуты
К примеру, имеем 128-точечное преобрабразование Фурье при частоте дискретизации 44100 Гц. Тогда значение частоты для i-й точки полученного набора = i*44100/128.
1
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 6
09.03.2014, 21:23  [ТС] 3
raxp, Дело в том, что у меня нет частоты дискретизации. Я пользовался библиотекой FTT, она просто берет на вход массив и выдает на выходе. Или частотой дискретизации считается дискретизация с которой набирался массив сигнала?
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,161
Записей в блоге: 1
09.03.2014, 21:31 4
Тестовый сигнал задается с определенной частотой, это означает n-е количество периодов сигнала за заданный период времени. Частота дискретизации - есть частота взятия отсчетов непрерывного во времени сигнала.
1
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 6
09.03.2014, 21:42  [ТС] 5
raxp, спасибо большое, буду пробовать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2014, 21:42

Cоответствие datagridview и DataSource DataTable
Здравствуйте, уважаемые участники форума. Помогите разобраться... Есть БД на SQL Server 2005 и...

БПФ, поиск максимума спектральной плотности, поиск экстремума (максимума) в отсчетах БПФ
Всем добра! В математике я нуб, нужна помощь в решение задачи в Matlab!!! Дано: 1) Частота...

После поднятия частоты ОП, комп не запускается
После поднятия частоты ОП, комп не запускается. Вернее запускается, но нет никакого изображения......

После увеличения оперативы и частоты упал сайт
дистрибутив Debian Wheezy, по ssh заходит, а сайт лежит. После возвращения конфигурации обратно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.