104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
1

Преобразование Фурье

19.09.2024, 10:10. Показов 871. Ответов 22

Author24 — интернет-сервис помощи студентам
Вопрос.
На картинке три сигнала синусоиды отличающиеся количеством отсчетов:
1-й сигнал содержит на 1 отсчет меньше от целого числа периодов.
2-й сигнал содержит целое число периодов.
3-й сигнал содержит на 1 отсчет больше от целого числа периодов.
Отличие вполне видно невооруженным глазом в конце синусоиды.
Соответственно по цветам изображены спектры (ДПФ). Амплитудные спектры очень близки между собой. По фазе - есть вопросы.

1. Почему фазовый спектр 2 и 3 сигналов гладкий, а когда на 1 отсчет меньше, чем целое число периодов, то превращается в хрень какую-то. Причем ОДПФ дает исходный сигнал, поэтому вроде как думается, что в расчете ошибок нет.
При дальнейшем уменьшении кол-ва отсчетов, т.е. укорочении синуса фазовый спектр снова гладкий. Итого фазовый спектр непонятной формы получается, когда количество отсчетов на 1 меньше, чем целое число ПОЛУпериодов. (на полупериодах тот же эффект повторяется)

2. Вопрос по ОДПФ. Формально ОДПФ дает комплексные отсчеты, но (см. первые три осциллограммы с сигналами, на них ОДПФ тоже есть) при этом RE часть = сигналу, а IM часть = нулю. Однако Если я пропускаю синус через к.л. фильтр, то ОДПФ дает НЕнулевую мнимую часть. Так разве должно быть? Почему так? И что это значит физически? И как правильно сделать, чтобы была нулевая мнимая часть?
Миниатюры
Преобразование Фурье  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2024, 10:10
Ответы с готовыми решениями:

Преобразование Фурье
Добрый день! Задали вопрос. Почему нельзя вместо преобразований Фурье использовать интерполяцию...

Преобразование Фурье
Добрый день! Не могли бы вы подбросить рабочий код для преобразования Фурье в Делфи? Нужен код...

Дискретное преобразование Фурье
Ребят у меня вопрос, у меня есть сигнал виде отсчетов общее число отсчетов 120540, так вот скажите,...

Дискретное преобразование Фурье
Здравствуйте, преподаватель задал к завтрашнему сей пример в довольно странной форме, не очень...

22
3311 / 2414 / 548
Регистрация: 11.09.2009
Сообщений: 8,781
19.09.2024, 16:55 2
Цитата Сообщение от ViktorArs Посмотреть сообщение
Почему фазовый спектр ...
Потому что рассчёт спектра при ДПФ производится исходя из предположения, что сигнал бесконечен, то есть оцифрованное "окно" периодически повторяется бесконечное количество раз. Получается, что скачки сигнала по фазе в точках пристыковки окон - фазовая модуляция, которую и видно на рассчитанном спектре.

Чтобы "очистить" спектр, применяют к окну функции преобразования огибающей в колоколоподобную, со спадом амплитуды на краях до нуля - оконные весовые функции, например функции Бартлетта, Хэмминга, Ханна, Блэкмана-Харриса и др.
Есть ещё вариант - подбирается ширина окна уменьшением количества имеющихся отсчётов или добавлением нулевых отсчётов так, чтобы фаза в начале и в конце окна совпадали. Но это более сложный и менее распространённый алгоритм, и не ко всем видам сигнала может быть применён (в частности, к сигналам со сложным спектром - вообще неприменим).
1
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
19.09.2024, 21:14  [ТС] 3
Цитата Сообщение от i8085 Посмотреть сообщение
Потому что рассчёт спектра при ДПФ производится исходя из предположения, что сигнал бесконечен, то есть оцифрованное "окно" периодически повторяется бесконечное количество раз. Получается, что скачки сигнала по фазе в точках пристыковки окон - фазовая модуляция, которую и видно на рассчитанном спектре.
Согласен. Дело ясное.
Цитата Сообщение от i8085 Посмотреть сообщение
Чтобы "очистить" спектр, применяют к окну функции преобразования огибающей в колоколоподобную, со спадом амплитуды на краях до нуля - оконные весовые функции, например функции Бартлетта, Хэмминга, Ханна, Блэкмана-Харриса и др.
Тоже ясно.
Цитата Сообщение от i8085 Посмотреть сообщение
Есть ещё вариант - подбирается ширина окна уменьшением количества имеющихся отсчётов или добавлением нулевых отсчётов так, чтобы фаза в начале и в конце окна совпадали. Но это более сложный и менее распространённый алгоритм, и не ко всем видам сигнала может быть применён (в частности, к сигналам со сложным спектром - вообще неприменим).
В данном конкретном случае, я так изначально и делал.

Вопрос главный немного не в том. Наверно невнятно выразился.
1. Я взял сигнал с целым числом периодов.
2. Построил спектр.
3. Удалил одну точку в конце сигнала.
4. Построил спектр.
5. И т.д. по одной точке удаляя прошел один период.
6. Построил спектры всех сигналов.

И из них все сигналы кроме двух имеют гладенький фазовый спектр.
А два исключения, это
1. Целое число периодов минус одна точка в конце.
2. Целое число периодов минус полпериода, минус одна точка в конце.
0
3311 / 2414 / 548
Регистрация: 11.09.2009
Сообщений: 8,781
19.09.2024, 22:38 4
Цитата Сообщение от ViktorArs Посмотреть сообщение
все сигналы кроме двух ...
При таком количестве периодов в окне, чтобы изменение длины окна на один отсчёт приводило к кардинальному изменению вида спектра, - это надо посадить в алгоритм расчёта какую-то солидную ошибку. Ищите. Где - подсказать не могу. Из вашего рисунка не очень понятно даже, сколько отсчётов приходится на один период. Могу только предположить, что около 20. И периодов в окне укладывается 20. Итого, ширина окна 400 ±1 отсчёт. Если всё так, то точно ищите ошибку, потому что 1/400 - это 0,25%. На форму спектра принципиально резко влиять не должно.

Могу предположить, что это может быть связано с точностью представления числа, с округлением, с "набеганием" ошибки и т.п., и при каких-то числах возникает резкий выброс погрешности счёта.
Проверьте, что с дискретизацией и представлением окна всё правильно, и попробуйте для начала использовать счёт в числах с двойной точностью. Посмотрите, что изменится.
1
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
22.09.2024, 22:08  [ТС] 5
Цитата Сообщение от i8085 Посмотреть сообщение
При таком количестве периодов в окне, чтобы изменение длины окна на один отсчёт приводило к кардинальному изменению вида спектра, - это надо посадить в алгоритм расчёта какую-то солидную ошибку.

Цитата Сообщение от i8085 Посмотреть сообщение
Из вашего рисунка не очень понятно даже, сколько отсчётов приходится на один период. Могу только предположить, что около 20. И периодов в окне укладывается 20. Итого, ширина окна 400 ±1 отсчёт. Если всё так, то точно ищите ошибку, потому что 1/400 - это 0,25%. На форму спектра принципиально резко влиять не должно.
12 отсчетов в периоде
Цитата Сообщение от i8085 Посмотреть сообщение
Могу предположить, что это может быть связано с точностью представления числа, с округлением, с "набеганием" ошибки и т.п., и при каких-то числах возникает резкий выброс погрешности счёта.
Даже не решаюсь спросить о чем это. Что делать-то?
Цитата Сообщение от i8085 Посмотреть сообщение
Проверьте, что с дискретизацией и представлением окна всё правильно, и попробуйте для начала использовать счёт в числах с двойной точностью. Посмотрите, что изменится.
Первую часть предложения не совсем понял? Как дискретизацию проверить? Она 12 отсчетов на период. (вы совершенно точно предположили). Но как и что проверить я не понимаю совсем. Вторая часть предложения . . . А разве в матлабе по умолчанию не double?
0
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
22.09.2024, 22:11  [ТС] 6
Цитата Сообщение от i8085 Посмотреть сообщение
Из вашего рисунка не очень понятно даже, сколько отсчётов приходится на один период.
Уменьшил (укоротил) сигнал. Вроде все о чем вы говорили должно быть видно теперь. Эффект тотже.
Миниатюры
Преобразование Фурье   Преобразование Фурье  
0
3311 / 2414 / 548
Регистрация: 11.09.2009
Сообщений: 8,781
23.09.2024, 02:11 7
ViktorArs, чего-то я сообразить не могу, как вы считаете...
В случае хорошо состыкованной синусоиды, в амплитудном спектре действительно должны быть две "палки". Но только одна - прямая, вторая - зеркальная в отрицательных частотах. У вас - две положительные, причём значения 39180 и 440800 ...
Хотя частота исходного сигнала судя по верхнему графику равна 40000 (4/1*10-4).
По-моему, где-то что-то сильно съехало. Нет?
Преобразование Фурье
1
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
23.09.2024, 13:25  [ТС] 8
Спасибо!!!
Цитата Сообщение от i8085 Посмотреть сообщение
Но только одна - прямая, вторая - зеркальная в отрицательных частотах. У вас - две положительные, причём значения 39180 и 440800 ...
Есть отличие, когда спектр строится от 0 до pi или от -pi/2 до pi/2 ? Я всегда думал, что разницы нет? Если есть, не могли бы пояснить в чем суть?
Цитата Сообщение от i8085 Посмотреть сообщение
Хотя частота исходного сигнала судя по верхнему графику равна 40000 (4/1*10-4).
Да, 40 кГц.
Цитата Сообщение от i8085 Посмотреть сообщение
По-моему, где-то что-то сильно съехало. Нет?
Пытаюсь понять.
0
3311 / 2414 / 548
Регистрация: 11.09.2009
Сообщений: 8,781
24.09.2024, 02:27 9
Цитата Сообщение от ViktorArs Посмотреть сообщение
спектр строится от 0 до pi или от -pi/2 до pi/2
Опять вообще не понял. Спектр строится по отсчётам амплитуды в имеющемся исходном окне.
Ширина окна - в единицах времени. Обратная величина - ширина рассчитанного спектра в единицах частоты. Огибающая рассчитанного спектра - sin(x)/x. Первый ноль огибающей - на частоте, равной частоте дискретизации. Берётся только этот первый "лепесток" огибающей спектра. То, что можно посчитать в следующих лепестках - просто повторение этой периодической функции. Теорема Котельникова, однако... Есть конечно приёмы всякого "оверсэмплирования", но это частные случаи. Явно не ваш. Так что первое, с чем вам по-моему надо разобраться, откуда в выходном спектре частоты выше половины частоты дискретизации.
Амплитудный спектр обычно рисуется только для положительных значений частоты, т.е. берётся только половина от рассчитанного массива. Вторая половина - зеркальная, частоты отрицательные, "мнимые". Смысл её рисовать? Но всё равно, даже если предположиь, что шкала "съехала" на какую-то константу, те две "палки" не объяснить. 39180 - это видимо исходные 40000. А как сюда попала частота в 10 раз выше?...
На фазовый спектр пока вообще не смотрю. При таком представлении амплитудного - нет смысла, вообще непонятно, как он считается.
Вы считаете в Маткаде? Стандартными функциями? Там же Хэлп встроенный неплохой есть. Да и статей про него куча.
1
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
24.09.2024, 11:23  [ТС] 10
Цитата Сообщение от i8085 Посмотреть сообщение
Опять вообще не понял. Спектр строится по отсчётам амплитуды в имеющемся исходном окне.
Ширина окна - в единицах времени. Обратная величина - ширина рассчитанного спектра в единицах частоты. Огибающая рассчитанного спектра - sin(x)/x. Первый ноль огибающей - на частоте, равной частоте дискретизации.
Все верно.
Цитата Сообщение от i8085 Посмотреть сообщение
Берётся только этот первый "лепесток" огибающей спектра. То, что можно посчитать в следующих лепестках - просто повторение этой периодической функции.
Все верно. Вот я и строю (привычка, если можно так выразиться) два лепестка в положительном направлении. Т.е. не от 0 до https://www.cyberforum.ru/cgi-bin/latex.cgi?f_s/2, а от 0 до https://www.cyberforum.ru/cgi-bin/latex.cgi?f_s. На рисунке же явно видно, что пики расположены в точках 40 кГц и f_s - 40 кГц = 480 кГц - 40 кГц = 440 кГц.
Цитата Сообщение от i8085 Посмотреть сообщение
Амплитудный спектр обычно рисуется только для положительных значений частоты, т.е. берётся только половина от рассчитанного массива. Вторая половина - зеркальная, частоты отрицательные, "мнимые". Смысл её рисовать?
Ну вот я со 2 курса рисую до https://www.cyberforum.ru/cgi-bin/latex.cgi?f_s.
Все в matlab. Ф-ции свои, но я ими пользуюсь больше 10 лет, и я их сравнивал со стандартными, и получалось одинаково.

А что касается pi/2 и т.д. - это нормализованные единицы имелось ввиду.
0
3311 / 2414 / 548
Регистрация: 11.09.2009
Сообщений: 8,781
24.09.2024, 12:38 11
Цитата Сообщение от ViktorArs Посмотреть сообщение
я со 2 курса рисую до fs.
Зачем?
ДПФ - это ж не какой-то физический смеситель, а просто алгоритм с определёнными допущениями и ограничениями. В исходном спектре такой частоты нет. Всё, что выше fs/2 - это ж просто "дефект счёта". Или я что-то забыл?
1
5146 / 2736 / 555
Регистрация: 07.11.2019
Сообщений: 4,476
24.09.2024, 12:39 12
Если сигнал содержит целое число периодов, т.е. нет разрывов при периодическом продолжении сигнала, то его амплитудный спектр будет состоять из двух пиков и нулей (точнее очень близких к нулю значений).
Близкие к нулю (шумы дискретизации) комплексные значения будут иметь случайную фазу, что вы и наблюдаете. Фаза это направление вектора, если вектор нулевой, то о его направлении говорить нет смысла.
2
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
24.09.2024, 13:23  [ТС] 13
Спасибо!

Добавлено через 20 минут
Цитата Сообщение от i8085 Посмотреть сообщение
ДПФ - это ж не какой-то физический смеситель, а просто алгоритм с определёнными допущениями и ограничениями. В исходном спектре такой частоты нет. Всё, что выше fs/2 - это ж просто "дефект счёта". Или я что-то забыл?
Нет. Вы все верно говорите. В учебнике так было, с тех пор пошло.
0
5146 / 2736 / 555
Регистрация: 07.11.2019
Сообщений: 4,476
24.09.2024, 14:05 14
Все что выше fs/2 - это "отрицательные" частоты. В matlab есть функция fftshift, для того чтобы нулевая частота была в центре графика.
Чтобы при ОДПФ не получались комплексные значения, нужно чтобы при фильтрации сохранялась симметрия. (Четная функция для действительной части и нечетная для мнимой).
2
3311 / 2414 / 548
Регистрация: 11.09.2009
Сообщений: 8,781
24.09.2024, 14:28 15
Цитата Сообщение от ViktorArs Посмотреть сообщение
В учебнике так было
Ну, я не математик-теоретик, я практик. Привык, чтобы рассчитанные спектры как на экране анализатора спектра выглядели. Иначе какой в них практический смысл?

Цитата Сообщение от ViktorArs Посмотреть сообщение
Спасибо!
Разобрались, что ли? Так поделитесь, в чём дело было. Даже интересно.
0
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
25.09.2024, 09:03  [ТС] 16
Цитата Сообщение от u235 Посмотреть сообщение
Чтобы при ОДПФ не получались комплексные значения, нужно чтобы при фильтрации сохранялась симметрия. (Четная функция для действительной части и нечетная для мнимой).
О!
Именно так я и рассчитываю делать (это далнейший вопрос, тут подробно еще не писал). Точнее давно сделал, но на данный момент тут занятость повысилась. Через недельку займусь.
И фильтр вроде симметричный, но вылезает все равно мнимая часть. На много меньше по амплитуде, чем действительная, но вылезает.

Добавлено через 1 минуту
Цитата Сообщение от i8085 Посмотреть сообщение
Разобрались, что ли? Так поделитесь, в чём дело было. Даже интересно.
Не на 100% еще.
Просто полагаю, что это очень хорошая идея.
Цитата Сообщение от u235 Посмотреть сообщение
Если сигнал содержит целое число периодов, т.е. нет разрывов при периодическом продолжении сигнала, то его амплитудный спектр будет состоять из двух пиков и нулей (точнее очень близких к нулю значений).
Близкие к нулю (шумы дискретизации) комплексные значения будут иметь случайную фазу, что вы и наблюдаете. Фаза это направление вектора, если вектор нулевой, то о его направлении говорить нет смысла.
Добавлено через 6 минут
Где я приводил 2 картинки, там графки отличаются наличием/отсутствием одной точки.
1. Начинается синус в нуле, заканчивается за один отсчет до нуля. Если мы согласно теории Фурье бесконечно продлеваем сигнал, то это идеальный синус. Нет разрывов. Вероятно разрывов 1-го рода.
2. Начинается синус в нуле, заканчивается тоже в нуле. Если мы также продлеваем сигнал, то это не совсем идеальный синус. В месте "стыковки" будет как бы два отсчета подряд со значением ноль. Первый ноль - последняя точка предыдущего синуса, второй ноль - первая точка нового куска синуса. Это вроде как получается разрыв.
0
5146 / 2736 / 555
Регистрация: 07.11.2019
Сообщений: 4,476
25.09.2024, 09:10 17
ViktorArs, какую фазу будет иметь вектор 0+0j? Никакую, точнее неопределенную: arctg(0/0)
Вот, а у вас вместо нулей - почти нули, связаные с конечной разрядностью и т.п. И фаза получается случайная, что вы и наблюдаете на графике.

Добавлено через 5 минут
ViktorArs, Вот в первом случае на графике будет случайная фаза для значений где амплитуды близких к нулю.. А во втором случае появляются промежуточные частоты с маленькой,но не нулевой амплитудой из-за разрыва. Постройте графики АЧХ в логарифмической шкале, все будет понятно.
1
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
03.10.2024, 20:26  [ТС] 18
Цитата Сообщение от u235 Посмотреть сообщение
Чтобы при ОДПФ не получались комплексные значения, нужно чтобы при фильтрации сохранялась симметрия. (Четная функция для действительной части и нечетная для мнимой).
Это для комплексной частотной характеристики фильтра должно это соблюдаться?
0
5146 / 2736 / 555
Регистрация: 07.11.2019
Сообщений: 4,476
Вчера, 06:21 19
Это требование к отфильтрованому сигналу (в частотной области, Фурье образу) перед ОДПФ. Иначе мы не получим действительный сигнал на выходе.
Смысл в том, чтобы действительная часть перед обратным преобразованием была четной функцией, мнимая - нечетной.
0
104 / 85 / 22
Регистрация: 09.01.2018
Сообщений: 463
Вчера, 09:30  [ТС] 20
А как мне быть-то тогда не пойму? Как достичь выполнения требования? Для этого фильтр должен отвечать требованиям каким-то?
Есть входной сигнал. Он туда-суда (ДПФ-ОДПФ) преобразуется правильно. Мнимая = 0.
Пропускаю через фильтр.
И что мне потом мне сигнал видоизменять? Это же не правильно?

А если брать не цифровые фильтры а аналоговые? Там тоже мнимая часть будет?

Добавлено через 1 час 6 минут
Что-то я поразмышлял, я даже не понимаю, как именно цифровой фильтр (линейная дискретная система) может "испортить" входной сигнал, что у него (у сигнала) это требование перестанет выпоняться?
0
Вчера, 09:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Вчера, 09:30
Помогаю со студенческими работами здесь

Оконное преобразование Фурье
Оконное преобразование Фурье — это разновидность преобразования Фурье....

Быстрое преобразование Фурье
Здравствуйте, реализую быстрое преобразование Фурье массива и фильтра, умножаю их, делаю обратное...

Дискретное преобразование Фурье
Здравствуйте, не знаю даже в какую тему правильно вопрос адресовать. В общем разбираю с дискретным...

Быстрое преобразование Фурье
Доброго времени суток! Стоит следующая задача. Используя алгоритм Быстрого Преобразования Фурье...

Преобразование Фурье необычного сигнала
Приветствую всех! Есть дискретный сигнал (зависимость от времени) который в каждый момент времени...

Обратное быстрое преобразование Фурье
Здравствуйте, уважаемые форумчане. Изучаю теорию БПФ(быстрое преобразование Фурье), а именно -...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru