DSPSYSTEM Теория и практика цифровой обработки сигналов

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



О быстром преобразование Фурье

Сообщений 1 страница 10 из 10

1

Вопрос состоит в следуещем! Возможно ли применение алгоритма быстрого преобразования Фурье, если разлогать сигнал не на ортогональный базис. Т.е. спектр строить не из кратных частот, а из произвольных. Это равносильно прибавлению к "k" в правой части формулы http://www.dspsystem.narod.ru/content/f … 1d0bde.gif произвольного числа dk. Это конечно уже нельзя будет назвать преобразованием Фурье, но может можно применить алгоритм быстрого преобразования.

0

2

это ничто не мешает вам делать. Приведенная формула будет иметь вид:

S(k) = sum(s(n)*exp(-j*2*pi*n*k/N).

если k заменить на k+dk, то получится:

S(k+dk) = sum(s(n)*exp(-j*2*pi*n*(k+dk)/N)  = sum(s(n)*exp(-j*2*pi*n*dk/N)*exp(-j*2*pi*n*k/N). 

доругими словами мы получим БПФ комплексного сигнала s(n)*exp(-j*2*pi*n*dk/N). При этом можно применять стандарный алгоритм БПФ. В библиотеке dspdll функция cfft.

0

3

Если я правильно понял, то имея сигнал s(n) спектр которого содержит гармоники, частоты которых произвольны (как кратные частоте дискретизации, так и не кратные), то возможно подобрать такую комплексую функцию W(n, k) = exp(-j*2*pi*n*dk(k)/N), при которой ДПФ от произведения W(n, k)*s(n) даст спектр без "растеканий", т.е. все гармоники будут находиться в максимуме АЧХ бинов ДПФ. При этом функция dk(k) - это разница между частотой одной из гармоник сигнала и частотой максимума АЧХ k-го бина ДПФ.

0

4

1. Я имел ввиду dk неизменное. Вы я так понял хотите менять dk. Если вы меняет dk, то это уже не совсем ДПФ, а скорее вычисление заданных гармоник по заданной сетке.
2. Думается, что вы можете подобрать W(n, k) = exp(-j*2*pi*n*dk(k)/N), при которой ДПФ от произведения W(n, k)*s(n) даст спектр без "растеканий", т.е. все гармоники будут находиться в максимуме АЧХ бинов ДПФ. НО!!! как только вы измените сигнал (сдвинете частоту сигнала на самую малость), то вам надо будет снова подбирать W(n, k), причем для того чтобы подобрать W(n, k)  необходимо знать на каких частотах у вас сигнал. Т.е. спектральный анализ теряет смысл, так как вы спектр сигнала знаете. Цикл замкнулся. Для того чтобы посмотреть спектр вам надо W(n, k), которое вы можете получить только зная спектр. Но повторю, теоретически это возможно. Я даже могу сказать вам как будет выглядеть  W(n, k) - как идеальный фильтр, выделяющий ТОЛЬКО частоты ваших истинных гармоник и подавляющий все остальное.

0

5

podalirius написал(а):

НО!!! как только вы измените сигнал (сдвинете частоту сигнала на самую малость), то вам надо будет снова подбирать W(n, k), причем для того чтобы подобрать W(n, k)  необходимо знать на каких частотах у вас сигнал. Т.е. спектральный анализ теряет смысл, так как вы спектр сигнала знаете. Цикл замкнулся. Для того чтобы посмотреть спектр вам надо W(n, k), которое вы можете получить только зная спектр.

Может быть если я поясню суть проблемы все станет яснее. Дело в том, что я не хочу проводиь спектральный анализ, а хочу узнать фазу и амплитуду выделяемой гармоники (предположим что частоту мы знаем). Когда гармоника одна все просто: умножаем на комплексную экспаненту (гетеродирование в ноль) и отфильтровываем все лишнее. Когда же гармоник сотни и даже тысячи, то нам понадобится столько же гетеродинов и фильтров, что по вычислительным затратам многовато! Однако ДПФ это не что иное как набор гетеродинов и фильтров, только настроенных на кратные частоты. Поэтому применяя алгоритм быстрого преобразования Фурье можно было бы сократить вычислительные затраты на гетеродирование и фильтрацию, НО, так как частоты гармоник сигнала произвольны, то встает вопрос КАК В ЭТОМ СЛУЧАЕ ПРИКРУТИТЬ БПФ (или подобие БПФ) ДЛЯ УСКОРЕНИЯ ВЫЧИСЛЕНИЙ!

Один из вариантов это умножения s(n)*W(n, k)  для переноса гармоник на частоту, кратную частоте дискретизации, а затем сделать БПФ. Но и в этом случае мы только лишний раз делаем БПФ, т.к. можно сразу с помошью W(n, k) перенисти в ноль. Поэтому вопрос изначально так и звучал "Возможно ли применение алгоритма быстрого преобразования Фурье, если разлогать сигнал не на ортогональный базис". Имееться в виду не разделять на две экспаненты, а сразу! Повторюсь, ключевое слово не Фурье и спектральный анализ, а определение фазы и амплитуды гармоник с произвольными частотами.

Может я конечно пытаюсь создать вечный двигатель)))))

0

6

Для начала надо понять что за гармоники вы хотите сопровождать по амплитуде и по фазе. Во первых надо быть уверенным, что гармоники это действительно гармоники, поскольку спектр не обязательно дискртеный, а может быть и непрерывный. Если же ваш сигнал действительно гармоники, то у него должен быть период повторения.  Если вы продискретизируете сигнал ровно на одном периоде повторения, то вы сможете избавиться от растекания спектра, так как на этом интервале укладывается целое количество периодов каждого из сигналов. Например есть 4 синусоиды  с частотами 1, 3, 4 и 5.3 Гц. Тогда период такого сигнала равен 10 секундам, так как на 10 секундах укладывается цело количество отсчетов для всех частот (10 периодов для 1 Гц, 30 для 3 Гц , 40 для 4 и 53 для 5.3 Гц). Соответсвенно чем больше знаков после запятой тем ближе будут кратные частоты и больше потребуется выборка БПФ.
Что же касается вашего вопроса, то боюсь, что не получится в общем случае использовать алгоритм БПФ для реализации гетеродинов на некратных частотах. Хотя все зависит от степени некратности, возможно если dk будет представлять собой некую функцию от k, то можно будет использовать свойтсва периодичности синусов косинусов для ускорения вычисления. Но с налету так не скажешь, надо более глубоко понимать задачу.

0

7

Посмотрев на вывод алгоритма БПФ задумался, а так ли важно целое "k" или дробное? Ведь там скорее важно количество k которое должно быть равным N, а само значение "k"  на вывод алгоритма не влияет!!! Мы так же можем разбить на две суммы, так же можно вынести поварачивающий множитель из второй суммы!! А если "k" может быть дробным при реализации БПФ то это и есть разложение на неортогональные компоненты!!

0

8

если dk постоянная величина то вопросов нет, но если dk меняется от k, то думаю что так просто не получится

0

9

Ну может вы объясните с точки зрения физики за счет чего уменьшается количество умножений на комплексную экспаненту при обычном БПФ! Потому что глядя на формулы я никаких противоречий не вижу.

Я конечно извиняюсь за настырность, ну не дает мне покоя этот вопрос!! :insane:  А по ночам бессоница мучает :D

Отредактировано Pavel (2010-02-27 18:50:44)

0

10

сокращение достигается за счет периодичности синусов и косинусов. Например sin(2*x) и cos(2x) можно высчитать имея уже заранее рассчитанные cos(x) и sin(x). Противоречий нет, но и ускорения не будет так как поворотные к-ты уже не будут рассчитываться быстро.

0