Проблема с FFT
-
- beginner
- Сообщения: 29
- Зарегистрирован: 18 мар 2009, 11:07
- Версия LabVIEW: 8.6
Проблема с FFT
Ситуация такова: в цикле вычисляется БПФ сигнала, форма которого в свою очередь зависит от итерации цикла.
У меня возникли проблемы с:
1) масштабом, а именно на графике с результатом БПФ ось абсцисс не соотвествует по масштабу частотной оси.
2) мне необходимо прослеживать мощность одной определенной составляющей (гармоники) результата FFT и в результате получить график зависимости мощности этой составляющей от итерации цикла.
У меня возникли проблемы с:
1) масштабом, а именно на графике с результатом БПФ ось абсцисс не соотвествует по масштабу частотной оси.
2) мне необходимо прослеживать мощность одной определенной составляющей (гармоники) результата FFT и в результате получить график зависимости мощности этой составляющей от итерации цикла.
-
- beginner
- Сообщения: 29
- Зарегистрирован: 18 мар 2009, 11:07
- Версия LabVIEW: 8.6
Re: Проблема с FFT
Высылай копию моей программы. Суть проблем такова:
С помощью блока Bit Generation из Modulation Toolkit формируется псевдослучайная последовательность (ПСП, PN-sequence), далее в первом цикле она домножается на меандр полутактовой частоты и на выходе цикла имеется модифицированная ПСП, ортогональная первой по огибающей. Далее с помощью блоков Modulate PSK формируются ФМ-сигналы обычной и модифицированной ПСП. Далее из них извлекается квадратурная составляющая с помощью блоков Get Complex IQ Component. Во втором цикле происходит перемножение обычной и модифицированной ПСП, причем на каждой итерации происходит сдвиг обычной ПСП относительно модифицированной на величину равную 1/(Samples per Symbol). Количество итераций равно величине Samples per Symbol. Т.о. за весь цикл одна ПСП "сдвинется" относительно другой на величину равную длительности импульса. При этом на каждой итерации цикла считается БПФ от результата перемножения последовательностей. Проблема заключается в том, что на графике БПФ значения на оси абсцисс не соответствуют частотам гармоник спектра Фурье (т.е. общий вид спектра похож на правду, но масштаб частотной оси явно не соответствует действительности). Из первой проблемы вытекает невозможность решения основной задачи: мне необходимо во время выполнения второго цикла следить за амплитудой определенной гармоники (Fт=1/Ts=1/0.01=100 Hz) и на выходе иметь график зависимости амплитуды этой гармоники от задержки (tau, номер итерации цикла). Звучит страшно, но в примере все понятно. Помогите пожалуйста решить данную задачу.
С помощью блока Bit Generation из Modulation Toolkit формируется псевдослучайная последовательность (ПСП, PN-sequence), далее в первом цикле она домножается на меандр полутактовой частоты и на выходе цикла имеется модифицированная ПСП, ортогональная первой по огибающей. Далее с помощью блоков Modulate PSK формируются ФМ-сигналы обычной и модифицированной ПСП. Далее из них извлекается квадратурная составляющая с помощью блоков Get Complex IQ Component. Во втором цикле происходит перемножение обычной и модифицированной ПСП, причем на каждой итерации происходит сдвиг обычной ПСП относительно модифицированной на величину равную 1/(Samples per Symbol). Количество итераций равно величине Samples per Symbol. Т.о. за весь цикл одна ПСП "сдвинется" относительно другой на величину равную длительности импульса. При этом на каждой итерации цикла считается БПФ от результата перемножения последовательностей. Проблема заключается в том, что на графике БПФ значения на оси абсцисс не соответствуют частотам гармоник спектра Фурье (т.е. общий вид спектра похож на правду, но масштаб частотной оси явно не соответствует действительности). Из первой проблемы вытекает невозможность решения основной задачи: мне необходимо во время выполнения второго цикла следить за амплитудой определенной гармоники (Fт=1/Ts=1/0.01=100 Hz) и на выходе иметь график зависимости амплитуды этой гармоники от задержки (tau, номер итерации цикла). Звучит страшно, но в примере все понятно. Помогите пожалуйста решить данную задачу.
- Вложения
-
- PN-filter.vi
- (26.77 КБ) 176 скачиваний
-
Viktor
- expert
- Сообщения: 1408
- Зарегистрирован: 23 мар 2008, 10:56
- Награды: 4
- Версия LabVIEW: 2020
- Откуда: Санкт-Петербург
- Благодарил (а): 17 раз
- Поблагодарили: 3 раза
- Контактная информация:
Re: Проблема с FFT
Есть предложение:
Давайте будем выкладывать на форум , сохранённые для 8.0, чтобы все могли их открыть
Давайте будем выкладывать на форум , сохранённые для 8.0, чтобы все могли их открыть
-
- beginner
- Сообщения: 29
- Зарегистрирован: 18 мар 2009, 11:07
- Версия LabVIEW: 8.6
Re: Проблема с FFT
Извиняюсь и выкладываю для 8.0...
- Вложения
-
- PN-filter.vi
- (39.92 КБ) 181 скачивание
-
- beginner
- Сообщения: 29
- Зарегистрирован: 18 мар 2009, 11:07
- Версия LabVIEW: 8.6
Re: Проблема с FFT
По идее отслеживать определенную частотную составляющую можно так : перемножаем сигнал с гармоническим колебанием с частотой нужной нам гармоники и дальше производим низкочастотную фильтрацию. Я прав? Помогите пожалуйста!
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Проблема с FFT
Чтобы отслеживать только нужную частоту, поступают так: проводят прямое преобразование Фурье и выделяют необходимую гармонику. Чтобы предотвратить расползание на соседние частоты используют полосовые фильтры. Просто перемножить сигнал во временной области на гармонический сигнал нужной частоты нельзя- получится чушь. Используй свертку (в частотной области это будет как раз перемножение спектров).
-
- beginner
- Сообщения: 29
- Зарегистрирован: 18 мар 2009, 11:07
- Версия LabVIEW: 8.6
Re: Проблема с FFT
Прямое преобразование Фурье, насколько я понимаю, можно произвести FFT.vi ? Если да, то на выходе этой я получаю массив комплексных чисел и не знаю какой частоте соотвествует какая амплитуда.Crowbar писал(а):Чтобы отслеживать только нужную частоту, поступают так: проводят прямое преобразование Фурье и выделяют необходимую гармонику.
Можно поподробней про свертку, если можно какой нибудь маленький примерчик.Crowbar писал(а):Используй свертку (в частотной области это будет как раз перемножение спектров).
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Проблема с FFT
А ты найди модуль комплексного числа и не забудь нормировать по кол-ву точек в массиве, либо сразу воспользуйся PWR Spectrum, Amp and Ph Spect. Свертка по-английски convolution. В частности, ты можешь посмотреть примеры построения коэффициентов для FIR фильтров (через алгоритм взвешивающих окон (Windowed FIR) и алгоритм Parks-McClellan). FIR фильтр (по-русски КИХ фильтр) есть применение свертки.
-
- beginner
- Сообщения: 29
- Зарегистрирован: 18 мар 2009, 11:07
- Версия LabVIEW: 8.6
Re: Проблема с FFT
Ок, и у меня получится массив модулей, а как к реальным частотам то привязаться?Crowbar писал(а):А ты найди модуль комплексного числа и не забудь нормировать по кол-ву точек в массиве
А по поводу нормирования - просто разделить модуль на кол-во элементов массива?
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Проблема с FFT
Да, разделить на кол-во элементов. Индекс в массиве умножь на частоту Найквиста, потом подели на половинное кол-во отсчетов (до преобразования), так же шаг по частоте есть обратное значение периода дискретизации. Пример: частота дискретизации 2000 Гц, кол-во отсчетов 2000 => частота Найквиста 1000 Гц => частотный дискрет 1000/1000 = 1гц.
-
- beginner
- Сообщения: 29
- Зарегистрирован: 18 мар 2009, 11:07
- Версия LabVIEW: 8.6
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 8 Ответы
- 1903 Просмотры
-
Последнее сообщение Eugene_Eugene
-
- 4 Ответы
- 333 Просмотры
-
Последнее сообщение Artem.spb
-
- 13 Ответы
- 1220 Просмотры
-
Последнее сообщение Boxa
-
- 1 Ответы
- 499 Просмотры
-
Последнее сообщение alerm