Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу понять ДПФ
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
kumle
Как Сумма частотных составляющих от -00 до +00 превратилась в сумму от 0 до N-1 ?

Нажмите для просмотра прикрепленного файла
Zelepuk
Могу порекомендовать почитать Уолта Кестера или Юкио Сато. Их книги по ЦОС более "практичны" для начинающих.
kumle
Спасибо, уже читаю.
Alexey Lukin
Цитата(kumle @ Aug 24 2011, 15:52) *
Как Сумма частотных составляющих от -00 до +00 превратилась в сумму от 0 до N-1 ?

Там же написано: поскольку базисные функции (комплексные экспоненты) на цифровой сетке неуникальны, их можно сгруппировать, оставив только уникальные: от 0 до N–1.
kumle
Тогда получается если я взял оцифровал сигнал, взял 10 оцифрованых значений и получил в результате всего 10 точек для построения спектра ? никак иначе ?
SPACUM
Цитата(kumle @ Aug 24 2011, 17:27) *
Тогда получается если я взял оцифровал сигнал, взял 10 оцифрованых значений и получил в результате всего 10 точек для построения спектра ? никак иначе ?

Если Вы используете БПФ, то количество входящих переменных и количество выходящих переменных совпадают. На выходе мы можем получить 5 амплитуд + 5 фаз (частоты определяются жестко самим применением БПФ и неизменны для данной выборки).
БПФ - математическая абстракция и не определяет реальных частот сигнала, но то, что получается в большинстве случаев вполне достаточно для многих применений.
bahurin
посмотрите здесь там как раз опиывается как переходят от интеграла фурье к дпф
Alexey Lukin
Цитата(kumle @ Aug 24 2011, 17:27) *
Тогда получается если я взял оцифровал сигнал, взял 10 оцифрованых значений и получил в результате всего 10 точек для построения спектра ? никак иначе?

Правильнее сказать так: (комплексный) сигнал длиной 10 точек можно представить (полностью описать) с помощью БПФ из 10 частот. Но никто вам не запрещает брать БПФ и большей длины, дополняя сигнал нулями.
Дмитрий_Б
Да уж... Судя по шрифту, солидная книжка. Только приведённый текст ошибочен по существу.
Положим в (2.129) и (2.131) n=0. Если x(0) не 0, то (2.129) содержит бесконечную сумму из слагаемых, равных (2.131). Поэтому (2.131) не равно (2.129), по крайней мере, для n=0.
SPACUM
Цитата(Alexey Lukin @ Aug 24 2011, 21:57) *
Правильнее сказать так: (комплексный) сигнал длиной 10 точек можно представить (полностью описать) с помощью БПФ из 10 частот. Но никто вам не запрещает брать БПФ и большей длины, дополняя сигнал нулями.

Если у kumle всего 10 точек и пока никакой комплексности не намечается, то зачем человека путать? Есть RealFFT, которая из этого сделает 5 амплитуд и 5 фаз. И быстрее работает, чем для комплексных чисел. Лишнее надо отбрасывать.
Alexey Lukin
Цитата(SPACUM @ Aug 24 2011, 23:01) *
зачем человека путать?

Я всего лишь следую нотации его книжки.
Вы — тоже путаете. RealFFT даст 6 амплитуд и 4 фазы.

Цитата(Дмитрий_Б @ Aug 24 2011, 22:23) *
Да уж... Судя по шрифту, солидная книжка. Только приведённый текст ошибочен по существу.

Это классическая книга Рабинера-Гоулда. Никто не говорит, что X(k) в верхней формуле равно X(k) в нижней. Формула просто переписывается в другом виде, а значения коэффициентов Фурье при этом могут измениться.
Mad_max
Цитата(kumle @ Aug 24 2011, 15:52) *
Как Сумма частотных составляющих от -00 до +00 превратилась в сумму от 0 до N-1 ?

По моему, человек просто спросил про размножение копий спектра.
Частотную шкалу результата ДПФ можно рассматривать на интервале от -бесконечность до +бесконечности, никто не запрещает,
но то что вы получили на интервале от 0 до N-1 будет размножено в обе стороны, поэтому смысла в этом нету
диапазона от 0 до N-1 достаточно. А во многих задачах и вовсе достаточно диапазона "положительных" частот от 0 до N/2.
kumle
Кажется это понял.
А если у меня обычный сигнал (вещественный), то я могу вычислить его спектр по формуле
Нажмите для просмотра прикрепленного файла
(это из книги Уолта Кестера)

И если я хочу вычислить амплитуду какой нибудь составляющей спектра я должен свои оцифрованные выборки
подставить в эту формулу.
Но тогда непонятно что я должен подставить в скобки косинуса cos(2*pi*n*k/N)
если я допустим хочу вычислить какая будет амплитуда для частоты f ?
Я знаю что w=2*pi*f; тогда cos(2*pi*n*k/N) = cos(wt) отсюда wt=2*pi*n*k/N; 2*pi*f*t=2*pi*n*k/N; 2*pi уходят и получается что
f*t=n*k/N; выходит что t=n/N, а f=k
значит в формуле я буду суммировать такие произведения: X(n)*cos(2*pi*f*n/N)
где f - это частота на которой я хочу узнать амплитуду, а n=0 до N-1 ?
Но тогда время через которое я получаю оцифрованные выборки (частота дискретизации) нигде не учитывается ?


SPACUM
Цитата(kumle @ Aug 25 2011, 11:34) *
Но тогда время через которое я получаю оцифрованные выборки (частота дискретизации) нигде не учитывается ?

k - это нормированная частота. Если длина выборки = Т, то частота F = k / T.
Если Т = 1 секунда, то к - это частота в Герцах.
Разумеется к = 0, 1, 2, 3...(N/2 - 1) целое число.
Mad_max
Цитата(kumle @ Aug 25 2011, 11:34) *
Но тогда время через которое я получаю оцифрованные выборки (частота дискретизации) нигде не учитывается ?

N говорит о том по сколки точкам дискретного сигнала вы делаете преобразование Фурье.
От этого N зависит частотное разрешение вашего ДПФ. А вот оно как раз и связано с частотой дискретизации.
Fs/N = шаг частот анализа.
Пример, Fs=24кГц, N=1024, тогда шаг ДПФ равен 24/1024 = 23,4375Гц.
В итоге получаем первый бин ДПФ выносим за скобки, второй бин характеризует мощность сигнала на частоте 23,4375Гц,
второй бин на частоте 23,4375 * 2 = 46,875 и так для N/2 частот.
kumle
Цитата(SPACUM @ Aug 25 2011, 11:56) *
k - это нормированная частота. Если длина выборки = Т, то частота F = k / T.
Если Т = 1 секунда, то к - это частота в Герцах.
Разумеется к = 0, 1, 2, 3...(N/2 - 1) целое число.


Тогда в формуле аргумент косинуса у меня будет 2*pi*f*T*n/N
bahurin
Цитата(kumle @ Aug 25 2011, 11:34) *
И если я хочу вычислить амплитуду какой нибудь составляющей спектра я должен свои оцифрованные выборки
подставить в эту формулу.


Ничего подобного!!! Эта формула для реальной части спектра есть еще формула для мнимой части там вместо косинуса синус и чтобы получить амплитудный спектр вы должны взять корень квадратный из суммы квадратов реальной и мнимой частей спектра.
kumle
Цитата(bahurin @ Aug 25 2011, 12:40) *
Ничего подобного!!! Эта формула для реальной части спектра есть еще формула для мнимой части там вместо косинуса синус и чтобы получить амплитудный спектр вы должны взять корень квадратный из суммы квадратов реальной и мнимой частей спектра.


Точно !
Это тоже было в книжке, я поторопил события и неуспел прочитать !
Спавсибо !
Теперь точно смогу вычислить.
Нажмите для просмотра прикрепленного файла
Дмитрий_Б
Цитата(Alexey Lukin @ Aug 25 2011, 00:27) *
Это классическая книга Рабинера-Гоулда. Никто не говорит, что X(k) в верхней формуле равно X(k) в нижней. Формула просто переписывается в другом виде, а значения коэффициентов Фурье при этом могут измениться.

Вот как? Означает ли это, что единственному сигналу соответствуют 2 различных спектра? Не нравится мне математика нетрадиционной ориентации. Сигналу соответствует единственный набор коэффициентов ряда Фурье. Они меняются в том и только в том случае, если меняется сигнал. Что до книги - мне, помнится, попадались в ней неточности, хотя книга хорошая.
bahurin
Цитата(Дмитрий_Б @ Aug 25 2011, 21:15) *
Вот как? Означает ли это, что единственному сигналу соответствуют 2 различных спектра? Не нравится мне математика нетрадиционной ориентации. Сигналу соответствует единственный набор коэффициентов ряда Фурье. Они меняются в том и только в том случае, если меняется сигнал. Что до книги - мне, помнится, попадались в ней неточности, хотя книга хорошая.


Да ну не цепляйтесь там по сути написано правильно, хотя и запутано.

Что касается
Цитата
Сигналу соответствует единственный набор коэффициентов ряда Фурье


ряд Фурье справедлив для периодического сигнала, тогда его спектр линейчатый. Но если после АЦП я получил N точек сигнала, то его спектр не является линейчатым, он непрерывный, хотя периодический, потому что сигнал цифровой. И чтобы сделать спектр линейчатым я должен свои N точек бесконечно повторить (сделать сигнал периодическим), но это уже совсем другой сигнал, поскольку о периодичности исходного сигнала, который я оцифровал ничего не известно. Вот и получается что на входе АЦП мы имеем один сигнал, а спектр рассчитываем для совершенно другого сигнала, со всеми эффектами возникающими при искусственной периодизации исходного оцифрованного сигнала.
Driver_GV
Цитата(bahurin @ Aug 26 2011, 07:08) *
ряд Фурье справедлив для периодического сигнала, тогда его спектр линейчатый. Но если после АЦП я получил N точек сигнала, то его спектр не является линейчатым, он непрерывный, хотя периодический, потому что сигнал цифровой. И чтобы сделать спектр линейчатым я должен свои N точек бесконечно повторить (сделать сигнал периодическим), но это уже совсем другой сигнал, поскольку о периодичности исходного сигнала, который я оцифровал ничего не известно. Вот и получается что на входе АЦП мы имеем один сигнал, а спектр рассчитываем для совершенно другого сигнала, со всеми эффектами возникающими при искусственной периодизации исходного оцифрованного сигнала.


Используйте функции окна. Входные отсчеты по времени умножаются на соответствующую функцию окна, что влечет за собой обнуление сигнала на краях выборки. Это компромис между расширением центрального лепеска и подавлением боковых. я использую обычно Хамминга. Подавление боковых более 40 Дб.
bahurin
Цитата(Driver_GV @ Aug 26 2011, 23:31) *
Используйте функции окна. Входные отсчеты по времени умножаются на соответствующую функцию окна, что влечет за собой обнуление сигнала на краях выборки. Это компромис между расширением центрального лепеска и подавлением боковых. я использую обычно Хамминга. Подавление боковых более 40 Дб.


Это понятно но мы не об этом. Умножение на функцию окна отличного от прямоугольного это уже третий сигнал со своим спектром. Выборка N точек сигнала это тоже умножение на функцию окна, только прямоугольного.
Дмитрий_Б
Цитата(bahurin @ Aug 26 2011, 08:08) *
Да ну не цепляйтесь там по сути написано правильно, хотя и запутано.

ряд Фурье справедлив для периодического сигнала, тогда его спектр линейчатый. Но если после АЦП я получил N точек сигнала, то его спектр не является линейчатым, он непрерывный, хотя периодический, потому что сигнал цифровой. И чтобы сделать спектр линейчатым я должен свои N точек бесконечно повторить (сделать сигнал периодическим), но это уже совсем другой сигнал, поскольку о периодичности исходного сигнала, который я оцифровал ничего не известно. Вот и получается что на входе АЦП мы имеем один сигнал, а спектр рассчитываем для совершенно другого сигнала, со всеми эффектами возникающими при искусственной периодизации исходного оцифрованного сигнала.


Не стал бы, поскольку и так это знаю. Но человек не может разобраться, поскольку математика хромает.
Рабинер и Голд не годится как учебник.
Zelepuk
Цитата(Дмитрий_Б @ Aug 28 2011, 14:27) *
Не стал бы, поскольку и так это знаю. Но человек не может разобраться, поскольку математика хромает.
Рабинер и Голд не годится как учебник.


поэтому и рекомендую для ТС почитать лучше Сато или Кестера. rolleyes.gif
Serhiy_UA
Цитата(Zelepuk @ Aug 28 2011, 17:59) *
поэтому и рекомендую для ТС почитать лучше Сато или Кестера. rolleyes.gif

Сообщите названия книг и год выпуска, пожалуйста. Эти авторы наверняка выпустили в свет не одну книгу...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.