Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save anonymous/33a746c677a606ae6c7e2e03907d00d0 to your computer and use it in GitHub Desktop.
Save anonymous/33a746c677a606ae6c7e2e03907d00d0 to your computer and use it in GitHub Desktop.
Понятияо импульсном ямрс фурье преобразованием

Понятияо импульсном ямрс фурье преобразованием - Оконное преобразование Фурье



Кажется, еще несколько дней назад прозвучало утверждение, что статья описывает ПФ как метод анализа аналоговых сигналов — а не как математический трюк общего назначения. Зачем вы продолжаете спорить? У вас просто спор вокруг терминологии все упирается в определение спектра. Он не прибавляет нового смысла. Только полноправные пользователи могут оставлять комментарии. TM Feed Хабрахабр Geektimes Тостер Мой круг Фрилансим. Хабрахабр Публикации Пользователи Хабы Компании Песочница. Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые. FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты? Не знаете — не беда, прочитайте вышеприведенные ссылки. Если приводить аналогии, то примером аналогичного по смыслу преобразования может послужить например дифференцирование, превращающее функцию в её производную. Из-за этого постоянно возникают проблемы с отображением результатов этого преобразования, поскольку комплексные числа определяются не одной, а двумя координатами на оперирующем действительными числами графике. Удобнее всего, как правило, оказывается представить комплексные числа в виде модуля и аргумента и нарисовать их по раздельности как два отдельных графика: Кроме того, вместо обычного модуля комплексного значения часто рисуют его десятичный логарифм умноженный на В результате получается логарифмический график, значения на котором отображаются в децибелах дБ. Удобство подобного странного на первый взгляд представления возникает из того что фурье-образы различных функций часто необходимо перемножать между собой. При подобном поточечном умножении комплекснозначных фурье-образов их фазовые спектры складываются, а амплитудные — перемножаются. Первое выполняется легко, а второе — сравнительно сложно. Однако логарифмы амплитуды при перемножении амплитуд складываются, поэтому логарифмические графики амплитуды можно, как и графики фаз, просто поточечно складывать. На логарифмической шкале оба графика и амплитуды и мощности выглядят идентично и отличаются только коэффициентом — все значения на графике мощности ровно вдвое больше чем на шкале амплитуд. Соответственно для построения графика распределения мощности по частоте в децибелах можно не возводить ничего в квадрат, а посчитать десятичный логарифм и умножить его на Погодите, еще немного, с занудной частью статьи, объясняющей как интерпретировать графики, мы скоро покончим: Но перед этим следует понять одну крайне важную вещь: Определившись с тем, что же рисуется на графиках, давайте вернемся собственно к преобразованию Фурье и его свойствам. Существует несколько разных способов как определить это преобразование, отличающихся небольшими деталями разными нормировками. Например в наших ВУЗах почему-то часто используют нормировку преобразования Фурье определяющую спектр в терминах угловой частоты радианов в секунду. Я буду использовать более удобную западную формулировку, определяющую спектр в терминах обычной частоты герцах. Прямое и обратное преобразование Фурье в этом случае определяются формулами слева, а некоторые свойства этого преобразования которые нам понадобятся — списком из семи пунктов справа: Первое из этих свойств — линейность. Если мы берем какую-то линейную комбинацию функций, то преобразование Фурье этой комбинации будет такой же линейной комбинацией образов Фурье этих функций. Это свойство позволяет сводить сложные функции и их фурье-образы к более простым. Если взять функцию, состоящую из суммы множества синусоид с разными частотами, то согласно свойству линейности, фурье-образ этой функции будет состоять из соответствующего набора дельта-функций. Строго говоря, эта интерпретация неверна, поскольку дельта-функция и точка на графике — это совершенно разные вещи, но как мы увидим дальше, для дискретных преобразований Фурье она будет не так уж и далека от истины. Второе свойство преобразования Фурье — это независимость амплитудного спектра от сдвига сигнала по времени. Если мы подвинем функцию влево или вправо по оси x, то поменяется лишь её фазовый спектр. Третье свойство — растяжение сжатие исходной функции по оси времени x пропорционально сжимает растягивает её фурье-образ по шкале частот w. В частности, спектр сигнала конечной длительности всегда бесконечно широк и наоборот, спектр конечной ширины всегда соответствует сигналу неограниченной длительности. Четвертое и пятое свойства самые, пожалуй, полезные из всех. Они позволяют свести свертку функций к поточечному перемножению их фурье-образов и наоборот — поточечное перемножение функций к свертке их фурье-образов. Чуть дальше я покажу насколько это удобно. Шестое свойство говорит о симметрии фурье-образов. Именно по этой причине на графиках спектров практически никогда не рисуют отрицательную часть спектра — для действительнозначных сигналов она не дает никакой новой информации но, повторюсь, и нулевой при этом не является. Оно осмысленно только для сигналов конечной продолжительности, энергия которых конечна, и говорит о том, что спектр подобных сигналов на бесконечности быстро приближается к нулю. Гребенка Дирака — это просто периодическая последовательность дельта-функций с единичным коэффициентом, начинающаяся в нуле и идущая с шагом T. С математической точки зрения, дискретизация сигнала по времени — это просто поточечное умножение исходного сигнала на гребенку Дирака. Вместо непрерывной функции после подобного перемножения получается последовательность дельта-импульсов определенной высоты. При этом согласно свойству 5 преобразования Фурье, спектр получившегося дискретного сигнала есть свертка исходного спектра с соответствующей гребенкой Дирака. Заметим, что если исходный спектр имел конечную ширину и мы использовали достаточно большую частоту дискретизации, то копии исходного спектра не будут перекрываться, а следовательно и суммироваться друг с другом. Подобный Фурье-образ соответствует функции sinc Tx и согласно свойству 4, подобное умножение равнозначно свертке исходной последовательности дельта-функций с функцией sinc Tx То есть с помощью преобразования Фурье мы получили способ легко восстановить исходный сигнал из дискретизированного по времени, работающий при условии что мы используем частоту дискретизации, по крайней мере вдвое из-за наличия в спектре отрицательных частот превышающую максимальную частоту присутствующую в исходном сигнале. Однако, как несложно теперь понимая доказательство заметить, этот результат вопреки широко распространенному заблуждению определяет достаточное , но не необходимое условие для восстановления исходного сигнала. Например, если мы берем FM-радио действующее в полосе частот от 88 до МГц, то для его оцифровки можно использовать АЦП с частотой всего При этом, правда, понадобится качественный АЦП и хороший фильтр. Чтобы уменьшить эту проблему, сигнал нередко сэмплируют с завышенной частотой дискретизации, ставя при этом входной аналоговый фильтр на меньшую полосу пропускания и используя только нижнюю часть теоретически доступного частотного диапазона АЦП. На практике так, естественно, никто не делает. Существует много разных подходов к построению ЦАП, но даже в наиболее близких по смыслу ЦАП взвешивающего типа прямоугольные импульсы в ЦАП напротив выбираются по возможности короткими приближающимися к настоящей последовательности дельта-функций чтобы избежать излишнего подавления полезной части спектра. Однако вернемся обратно к преобразованию Фурье. Описанное выше преобразование Фурье, примененное к заранее дискретизированной последовательности сигналов называется преобразованием Фурье дискретного времени DTFT. До сих пор мы предполагали что на вход наших преобразований поступает сигнал определенный от минус до плюс бесконечности. Однако реальные доступные нам сигналы всегда имеют конечную длину — что делать? Для решения этой проблемы в FT и DTFT конечный сигнал просто дополняют слева и справа на бесконечность нулями. Если исходный сигнал изначально был конечным скажем, это отдельный импульс и в преобразование Фурье он попал полностью, то этот подход напрямую дает желаемый результат. В этом случае дополнение конечного отрезка нулями интерпретируют следующим образом: Пользуясь уже хорошо нам знакомым свойством 5, несложно сообразить, что при подобном умножении исходный сигнал прсто сворачивается со спектром функции окна. Например если мы пытаемся измерить спектр синусоиды дельта-функцию , но ограничиваем интервал измерений прямоугольным окном, то в получившимся спектре на месте дельта-функции мы увидим спектр окна — то есть Tsinc T x-f: Заметьте, что выбранная частота дискретизации в спектральной утечке почти не играет роли — короткий отрезок сигнала можно сэмплировать хоть на 10 ГГц, но это увеличит только количество поддающихся измерению частот, тогда как точность определения каждой отдельной частоты все равно останется низкой. Интересным частным случаем является ситуация, в которой сигнал с набором дискретных частот nF дискретизируется на частоте mF, где m,n — целые числа. Это свойство позволяет доказать аналог теоремы Котельникова для дискретного преобразования Фурье, но на практике такие сигналы, к сожалению, фактически не встречаются. Эту нормализованную запись часто используют в качестве определения DFT как преобразования последовательности из N комплексных чисел: Таким образом, работа с дискретизированным сигналом конечной длины сводится к тому, что этот сигнал вначале умножается на подходящую взвешивающую функцию, затем дополняется нужным числом нулей справа и передается в алгоритм БПФ. Как интерпретировать получившийся результат? С учетом всего вышеизложенного, Получившиеся значения есть равномерная сетка отсчетов по спектру DTFT. Чем больше отсчетов — тем мельче сетка, тем подробнее виден спектр. Амплитуда определяется как модуль комплексного числа, фаза — как аргумент. Чем длиннее исходный сигнал до дополнения нулями! Спектральная утечка ограничивает осмысленность расчета БПФ с большим дополнением нулями. Надеюсь преобразование Фурье и алгоритмы БПФ будут теперь для Вас простыми, понятными и приятными в обращении инструментами. Python автора , 1,8k публикаций. Программирование 2,9k авторов , 6,5k публикаций. Разработка мобильных приложений 1k авторов , 2,8k публикаций. Open source 1k авторов , 2,3k публикаций. Алгоритмы 1,3k авторов , 2,3k публикаций. Разработка веб-сайтов 4,1k авторов , 9,6k публикаций. Машинное обучение авторов , публикаций. API авторов , публикаций. Разработка под Android 1k авторов , 2,3k публикаций. Data Mining автора , публикаций. Яндекс открывает технологию машинного обучения CatBoost 1,6k 4. Добавить в закладки Просто текст и так вышел очень длинный, а мне хотелось что бы его все-таки дочитали до конца, не застряв в куче формул в начале. Тем более что основные формулы я все же привел, опустив только широко известные определения. Но если у Вас есть какие-то идеи что конкретно можно добавить в статью — то я их с благодарностью выслушаю и текст соответствующим образом подправлю. Я понимаю вашу точку зрения, но позиция mayorovp в данном случае больше соответствует моему личному мнению на тему, как такие вещи объяснять. Основная проблема ситуации, когда часть необходимых для понимания главной идеи статьи вещей вынесена во внешние ссылки — в том, что материал по этим внешним ссылкам имеет иной, часто более общий посыл, чем та статья, за которую берётся читатель. Тем не менее, я просто уверен, что пойдя в Википедию за точным определением, я зависну там ещё на несколько часов, потому что эта пресловутая свёртка будет выражаться через какие-то другие давно забытые мной вещи, а те — через ещё что-то. В итоге ситуация будет похожа на попытку скомпилить у себя в голове целую библиотеку математических понятий, из которой мне на самом деле нужна лишь маленькая часть, но пока я не завершу эту компиляцию, я не пойму, какая именно. Сейчас ваша работа мало чем отличается от множества просветительских статей на аналогичную тематику. И все они грешат одним и тем же: Не мне вам вменять что-либо в вину, ибо критиковать всегда проще, чем делать. Но я бы с гораздо большим удовольствием прочёл целый цикл статей на тему преобразования Фурье, где вся необходимая математика тоже была бы включена в комплект поставки. Да, это запарнее делать, но зато любой, обладающий действительно общераспространёнными базовыми знаниями на уровне дифференциального и интегрального исчислений хотя бы будет уверен, что по прочтении всего цикла он будет действительно понимать поданный материал. Если вы были бы готовы взяться за такой титанический труд, я мог бы вам посодействовать в качестве подопытного читателя, на котором можно было бы тестировать понятность и доходчивость материала. Я попробую дописать еще одну-две статьи на смежные темы. Правильно ли я понял, что основные затруднения были связаны со сверткой и дельта-функцией Дирака? Я напишу тогда одну небольшую статью про эту замечательную парочку и еще одну статью о том, как их используют при интерполяции и фильтрации сигналов и изображений. Если эти темы будут так же проработаны, обязательно пишите. Эта статья не для новичков, а для тех, кто использовал уже FT, но не знал многих интересных свойств. Например, только недавно я обдумывал, почему на маленьком окне выше погрешность обнаружения частот. Интуитивно понятно — меньше информации, но здесь всё досконально расписано. Видите ли, я взялся за вашу статью вечером в пятницу в очень расслабленном состоянии. В итоге я споткнулся о первую же внешнюю отсылку к вещам, которые на моей памяти уже не ассоциировались с чем-то простым. А дальше просто не читал. Поэтому описанный сценарий с потерянным читателем — ровно про меня. Так что у меня нет запросов на расшифровку какого-то конкретного понятия. У меня был запрос скорее на целостность подачи материала, позволяющую получить все необходимые знания в одном месте и от одного автора. Последнее очень важно, потому что тот же энциклопедический стиль подачи материала в Википедии настолько сух, что использовать её как учебник, а не как справочник, в большинстве случаев очень неудобно. А сторонний автор не ограничен теми гайдлайнами, которые обязательны для Википедии, и может подать материал менее формально, но зато куда более доходчиво. Раз уж вы поинтересовались моим мнением, то я постарался всё-таки просмотреть статью по диагонали и высказать более конструктивные замечания. Первое что можно отметить — это очень высокая концентрация терминов и постоянные отсылки к ним в процессе объяснения. Некоторые термины вводятся прямо по ходу дела, после чего постоянно используются. Здесь вы допускаете типичную ошибку лектора технического вуза: В вашем случае, так как речь всё же не идёт о лекции в реальном времени, помог бы отдельный глоссарий всех использованных терминов и выделение оных в тексте, как стилистически, так и с помощью гиперссылок, ведущих на соответствующий пункт глоссария. Это радикально облегчит неторопливому читателю проблему понимания нового для себя материала и даст ему уверенность в том, что автор не оставит его наедине с какими-то мудрёными логическими переходами. Эти самые логические переходы. На мой вкус, у вас очень action-packed манера изложения. Минимум воды и разжёвывания, максимум стремительности и выведения одних вещей из других. Это круто для блокбастеров, но для статей на научную тематику чуть более дружественный к читателю-новичку стиль был бы приятнее. Как у Фленагана в JavaScript Definitive Guide: Плюс, дотошно объясняя порой кажущиеся простыми вещи, иногда по несколько раз, но с чуть разных точек зрения, он даёт всестороннее представление о той или иной вещи, не оставляя шанса для некорректного или однобокого понимания, которое может возникнуть при более кратком пояснении. Я понимаю, что вас смущал объём текста. С необходимой водой, которой он был бы разбавлен до состояния, действительно доступного новичкам в пятницу вечером, текста стало бы в три раза больше. Но, как я уже писал в первом комментарии, тему можно было бы разбить на несколько тематических постов, и тогда проблема объёма не стояла бы так остро. В общем, отзыв я вам предоставил, что теперь делать — решать вам. Если хотите, я мог бы помочь вам с редактурой. Меня бы это разжёвывание свёртки только бы заставило искать, где оно заканчивается и начинается суть. Для этого придумали такую вещь как спойлер-блоки. Кому нужно — смотрит, кому не нужно — проматывает дальше. Меня в американских книжках убивает такая вода с миллионами повторов. В каждом из них встречается очередной важный аспект, не упомянутый ранее, типа чтобы не грузить, и из-за этого, а ещё и из-за того, что эти повторы никак не отделены от повествования, их не получается пропускать. Чувствую себя курицей, выклёвывающей вкусные зернышки из залежей навоза. Я где-то встречал на Хабре комментарий про сравнение манеры подачи материала у нас и на Западе: Тот минус, который вы описали, можно исключить, если в одном месте будет находиться самое полное определение термина, а при его использовании будут даваться либо гиперссылки, либо спрятанными в спойлер-блоки цитаты. Причём цитировать можно уже именно тот фрагмент, который максимально актуален для конкретного контекста, в котором термин был использован. Грамотная вода может сильно облегчить понимание. При этом претензии тех, кому она без надобности, вполне удовлетворяются соответствующим стилистическим оформлением текста. Однако домыслить эту воду, если текст изначально создавался в сухом и лаконичном стиле, намного сложнее. А уж если американские книжки так грешат этой популяризацией, что это стало притчей во языцех, значит таки бывает от неё польза, и совсем списывать со счетов дружественную к новичку манеру подачи не стоит. Беда в том, что почти никто выделением и оформлением повторов не заморачивается… Авторы, злоупотребляющие повторами, мне кажется, даже отчёта себе не отдают, что повтор очередной лепят. Всех авторов не изменишь, да. А вот попробовать уломать конкретно автора этой статьи на использование гибридного стиля для последующих постов — вполне реально. Если получится — можно будет даже собственными глазами наблюдать разницу и думать, получилось ли достичь желаемого результата. Для меня большим открытием оказалось применение Фурье для дискретизации аналогового сигнала. Однако, как-то не хватило подробностей про чаще встречающееся разложение сигнала на гармоники. Везде вижу, но ни разу не понял, как это — произвольную функцию представить суммой синусоид?.. Для чего, как Вы думали раньше, преобразование Фурье применяется чаще? Дискретизация и разложение на гармоники — это одно и то же. А произвольную функцию и нельзя представить суммой синусоид. Довольно часто непрерывное преобразование Фурье пытаются интерпретировать именно подобным образом, но эта интерпретация неверна. Вот периодический сигнал разложить в сумму синусоид можно. Дискретный сигнал последовательность чисел тоже в определенном смысле можно. Растиражировать можно, но зачем? Это уже получится другая функция, причем скорее всего разрывная концы отдельных отрезков не идеально стыковаться будут. А теперь до меня, кажется, начинает доходить, что наверно в результате такого разложения получится лишь спектр, то есть усреднённая оценка наличия в раскладываемом сигнале следов разных частот. Спектрограммы так рисуют, наверное, порезав сигнал на кусочки и разложив каждый отдельно, да? Восстановить, я так понимаю, сигнал в исходном виде — почти невозможно, лишь равномерную смесь синусоид. Ну, в общем, да, непрерывный спектр — это в приближенном смысле усредненная оценка наличия в раскладываемом сигнале следов разных частот. Спектрограммы действительно рисуют, порезав сигнал на кусочки и разлагая каждый кусочек отдельно полагая функцию вне взятого кусочка равной нулю. Из-за этой утечки точно восстановить исходный сигнал по конечному отрезку этого сигнала без дополнительной информации невозможно хотя приближенно, с довольно хорошей точностью, — можно. То есть получается, что принято говорить о наличии частоты X в спектре — когда преобразование Фурье выдаёт для неё какую-либо амплитуду, да? А если колебания с такой частотой присутствуют на половине продолжительности сигнала, амплитуда этой частоты в получаемом результате преобразования будет вдвое меньше, чем если эти колебания присутствуют всё время сигнала? Ну, и на глаз — по внешнему виду кривой сигнала. На слух мы определяем наличие какой-то частоты в звуке по реакции слуховых ресничек в улитке внутреннего уха. Типа, смог сигнал раскачать ресничку на участке соответствующего диаметра — значит, есть такая частота. Продолжает качать долго — значит, она длится. Не успел раскачать и закончился — нет частоты. Не смог раскачать потому что слаб — нет частоты. В преобразовании Фурье есть аналогии этим процессам? Подобные пороги чувствительности по амплитуде и продолжительности там как-нибудь отражаются? Да, с определением частоты все именно так. С амплитудой колебаний присутствующих лишь в половине сигнала — в первом приближении да. Представим себе фильтр, который синусоидальный сигнал определенной частоты пропускает, а все остальные сигналы — подавляет. Тогда наличие в сигнале данной частоты можно определить по наличию синусоиды на выходе подобного фильтра при подаче на него сигнала. На слух человек хорошо слышит эти биения и воспринимает их как звук низкой частоты, да и в графике сигнала их хорошо видно, тогда как в исходном сигнале этой частоты нет. А физиология слуха — это вообще очень интересная и сложная тема, но я так понимаю, точного механизма там никто не знает. Там есть аналогии с Фурье, есть с вейвлетами, а единой модели нет. Преобразование Фурье раскладывает биение на сумму двух сигналов, а ухо — на произведение. Вы же сами понимаете, что главные трудности здесь возникают со свёрткой и дельта-функцией. Дельта-функцию из википедии ещё можно понять хоть и знал это раньше , а со свёрткой совсем беда. И дальше интеграл по какому-то Rd. Кто все эти функции, и чего они от меня хотят? Хотелось бы определение таких базовых вещей в простом виде. А здесь почему отрезки вверх кончаются стрелочками? Потому что это — условная бесконечность, умноженная на коэффициент. Отсюда и стрелочка — чтобы можно было отобразить это на графике, и при этом не перепутать с регулярной точкой. Аналогично, я половину операций просто не помню как делать, поэтому выражения — легко представить и простое преобразование становятся непонятными и в этот момент теряешь нить. Причем нужны отнюдь не формулы — их я найду без проблем, мне нужно объяснение на пальцах пошагово, как это делается и самое главное — примеры из жизни для каждого момента — если делаем свертку, то как на википедии изображена картинка, которая легко дает понять почему свертка — есть особый вид интегрирования. Нужны простые и понятны примеры, которые непроходимые уродские формулы сделают понятными и осязаемыми. Без физического смысла математика — полная абстракция и совершенно неинетересна. Нужно показывать применение — если выполняем преобразование, то что оно дает. Зачем мы занимаемся скучной работой и нудным головоломным интегрированием. Очень разумные и правильные замечания. Имеем образование по верхушкам. Обсудить можем- применить не всегда. Пока не припрет необходимость. Обсуждение — это ведь не работа, а понимание приходит только когда плотно работаешь с такими вещами. А у меня в работе вообще нет необходимости в высшей математике. Я ее применяю только в хобби. Сейчас вот понадобилась для обработки данных с сенсоров и построения алгоритма полетного контроллера. В целом же для меня математика — это способ снизить алгоритмическую сложность программы. Это инструмент для обработки данных, которые — самое ценное, что есть в моей практике. Не слушайте недовольных, обзор у Вас получился отличный. Народ просто не понимает смысл научных обзоров, задача которых — создать в голове читателя общее представление о той области, изучить которую человеку еще только предстоит. Даже если часть доказательств остается пока непонятной, наличие такой общей картины способно во много раз сократить затраты времени на полноценное изучение. А для людей, которые уже изучили этот материал, такой обзор поможет структурировать материал в голове, разложить все по полочкам. Так что читать его лучше дважды — до и после. В целом изложенный Вами материал примерно соответствует тому, что у меня в курсе ЦОС студенты изучают в течение целого семестра, так что плотность материала идеальная для обзора и все претензии по поводу отсутствия доказательств совершенно не по делу. Спасибо большое, очень приятно было прочитать этот комментарий! Материал я думаю было бы все же неплохо дополнить рассказом про свертки и фильтры, тогда он был бы полным и давал более завершенную картину. И благодаря Вам этот рассказ стал немножко ближе к его практическому воплощению: Если там в ЦФ и свертках у Вас все так же хорошо продумано, как в спектрах, то получится просто замечательный и довольно полный обзор. В этой части у Вас с этим все очень хорошо. Кстати, такое понимание предмета очень трудно достижимо просто по книжкам, без опыта практической работы в данной области. Так что я бы почти достоверно идентифицировал Вас как коллегу: А формулы и их выводы можно в книжках посмотреть. Мне, например, очень понравилась часть статьи, где объясняется, почему применение окон приводит к растеканию спектра. PS после исправления статьи автором она стала читаться гораздо лучше, так что прошу мой комментарий выше считать устаревшим. Угу, причем то, что объясняется о полезности этих преобразований, я и так понял из статьи на Википедии и помню из университетского курса, а вот как именно проводить свертку функций, как именно восстанавливать сигнал и как это превратить в полезный алгоритм я так и не понял. В итоге поверхностно я понимаю эту тему, а пользоваться так и не могу. Самое интересное опущено, а то, о чем можно догадаться и понять на пальцах я и так уже давно понял. В целом, строгое описание куда понятнее. В строгом описании, скорее всего, придется до многого доходить на собственной шкуре, а здесь хотя бы перечислены ключевые моменты и подводные камни…. Довольно хорошо написано и проиллюстрировано, хотя, раньше встречал еще более простое и изящное изложение преобразования Фурье, правда, сейчас уже не вспомню источник, кажется даже из курса каких-то лекций. Ключевым приемом таких публикаций является проведение аналогий и ассоциаций с предметами и событиями из повседневной жизни, что даже люди далекие от темы улавливают суть. Тот же Джоэль Спольски часто прибегает к такому подходу и другие известные популяризаторы, Джефф Хокинс вспомнился со своей книгой. Но в целом написано очень неплохо, с указанием ключевых моментов и подводных камней! А могли бы вы столь же популярно рассказать о вейвлет-преобразовании? Желательно дискретное, и с реальными примерами кода. На википедии и в других местах написано очень много теории, и я вроде даже понял что это такое, но не нашёл ни одного алгоритма с доступным описанием в отличие от fft , чтобы просто взять и попробовать. Вот примеры кода с пояснением как именно работает преобразование на практике — это то, что нужно! Голую математику — в лес! Вот именно это и нужно. За такое объснение был бы очень благодарен. Мне как-то товарищ недавно объяснил на пальцах ПИД регулятор и я наконец-то понял как реальные данные связать и обработать. До этого формулы были отдельно, а реальные данные отдельно и воедино никак не собирались хоть ты тресни. К сожалению, алгоритм я пока не реализовал, а без него могу разве что на пальцах рассказать зачем нужны пропорциональная, интегральная и дифференциальная часть регулятора и что является для них входными данными. Это полезно только для понимания процесса, но алгоритма не дает. Хотя, вот тут , вроде, что-то про это рассказывалось уже…. С вейвлетами я знаком гораздо хуже: Но едва ли в ближайший месяц-два, к сожалению. А я ведь понимал всё это в универе! Угу, а нужен не ежик в тумане, а конкретика. К сожалению, разогнать туман с помощью статьи не удалось. Вполне милая статья, содержит основные позиции. Ограничив сигнал по времени мы получаем сигнал, ограниченный по времени КО. Его спектр вполне себе определен. Радиоимпульс конечной длительности — это не просто синусоида. Это полноценный сигнал со спектром sinc, лежащий в основе большинства радиосистем ФМ-2 и т. Если вы этот радиоимпульс умножили на неравномерное окно — получили третью функцию, с третьим спектром. Это отдельная задача, которую можно решать. Только это нужно подчеркивать и не вводить слушателя в заблуждения о наличии пороков у преобразования. Оно от этого не ломается. Утечка спектра — вполне признанный термин. Хорошо демонстрирует границы применимости теоремы Котельникова. Я не спорю, что такое явление есть. Я лишь говорю, что не стоит преподносить это как недостаток ПФ: И FT, и DTFT без проблем с ним работают, несмотря на то, что функция эта не равна нулю только на некотором интервале. Но это частный случай, когда стоит задача определить спектр периодической функции, определенной в бесконечных пределах, по конечной выборке. Если функция и так ограничена, то никакой утечки спектра может и не быть. Я ратую за то, чтобы оговаривали задачу, перед тем как её решали, иначе это читателя только запутывает. На Хабре было несколько статьей подобного плана, описывающих эксперименты с Фурье и Matlab-ом и я попробовал отталкиваться от примерно схожей схемы мышления. Но вышло похоже действительно переупрощенно, так что я постарался подправить текст чтобы сделать его более корректным. Матлаб — это исследовательский инструмент математика. Гораздо интереснее нормальный алгоритм, который можно превратить в код. Ну так чистый концентрированный алгоритм — это формулы, которые вы не любите. Мне не нужен дистиллят. Математика — это инструмент абстракции, поэтому перед ее практическим применением нужно сделать привязку к особенностям реального мира. Объяснив на красивом стройном ряде формул принцип, нужно спуститься с небес математики на грешную землю физики и инженерии и применить знания на практике. Только тогда формула станет полезной. В реальности вычисление производной или интеграла в символьном виде — практически невообразимо сложная алгоритмическая задача. Поэтому, например, интеграл на практике в дискретном цифровом мире является по сути вполне удобным сложением в цикле. И вот тут уже легко оценить красоту — сложное мат. Это искусство, которое востребовано в жизни на каждом шагу. Вы пишете Например в наших ВУЗах почему-то часто используют нормировку преобразования Фурье определяющую спектр в терминах угловой частоты радианов в секунду. А потом сразу после этого определяете , где — угловая частота. Да нет, он сразу после этого определяет , где — обычная частота. Тоже, кстати, ошибка, но несколько другого рода. Согласен, но просто, чтобы никого не запутывать, обычную частоту лучше обозначать через , а не. Согласен, спасибо за замечание. Ну f же привычнее, что за преклонение перед греческим алфавитом. Хотя тут оно будет конфликтовать с f t. Но это — скорее повод переименовать f t в более привычное x t. Я думаю, что тут речь не о том, как обозначать функцию, а как обозначать её аргумент. Омегой обычно обозначается угловая частота, а буквой ню — просто частота. Скорее там не omega, а просто w. Иногда используется в зарубежной литературе. Меня скорее смущают некоторые ошибки в определениях в формулах. Типа отсутствия j в показателе экспоненты в определении DFT. О, спасибо за важное уточнение! Мнимая единичка действительно при переписывании потерялась. А так вполне понятная статья, спасибо. На этом сайте есть очень доходчивое и красивое объяснение betterexplained. Попутно не менее доходчиво можно разобраться в комлексных числах. Вообще сайт достоин как минимум присутствия в закладках. Огромное спасибо за ссылку! Нисколько не умаляя стараний автора, только после статьи на betterexplained я понял суть. Такой бы на русском — студентам и школьникам бы очень пригодилось да и преподавателям, как образец. Может быть, есть что-то такое? Великолепная статья на betterexplained — и не только она: Что самое смешное — их реально можно рекомендовать даже студентам наших математических факультетов. Но, может быть, я неверно понял целевую аудиторию заметки и зря привередничаю? Хочу только добавить, что на практике дискретное косинус-преобразование DCT используется чаще, так как работает только с действительными числами. Есть предложение — описать DCT и его преимущества по отношению к FFT. Если только я не пропустил такую статью. Эти преобразования не взаимозаменяемы и дают разный результат. FFT прекрасно работает с действительными числами, поскольку они являются частным случаем комплексных с мнимой частой равной нулю. Для чисто действительных последовательностей на практике используются специальные версии алгоритмов, известные как RFFT или преобразование Хартли которое, в отличие от DCT, можно привести к FFT и наоборот. Децибелы автором определены по мощности, а график дан для сигнала-функции. В последнем случае надо десятичные логарифмы умножать на На 3-ем графике сверху по горизонтальной оси проставлена частота омега, а отметки некоторой граничной частоты даны как fсит. На графике синусоиды отмечена амплитуда а. Формула этой синусоиды содержит амплитуду, равную 1. Сигнал на выходе реального ЦАП действительно имеет вид ступенек см. Электроника и схемотехника", М. На графиках желательно указывать обозначения по горизонтальной оси. Цель этих замечаний — улучшить Вашу работу. Спасибо за конструктивную критику! Я привык f обозначать функцию и стремился избежать путаницы, но действительно стоило упомянуть об этой детали и использовать более широко распространенные обозначения 2. Как раз наоборот, для амплитуды нужно умножать на 10, а для мощности — на В первом случае — потому что ДЕЦИбелл, а во втором — потому что мощность есть квадрат амплитуды, а логарифм квадрата есть удвоенный логарифм 4,5,6. Так Кучумов в данном случае переупрощает. Тема окажется не полной без ссылок на используемые сегодня реализации БПФ и так же хотелось услышать Ваши комментарии о этих реализациях. А сам я начну с исторической реализации FFTPACK http: А есть ли реализации на других языках? FFTW — одна из стандартных библиотек на C. Интерфейсы на C и Fortran идут из коробки, обертки для других языков в изобилии видел биндинги для Python, Ruby. Года два-три назад наелся я с этой библиотекой. Версия, что была по умолчанию в ubuntu содержала баги и библиотека вела себя не так, как полагается по документации. Использование последних версий библиотеки мои проблемы решило. Кстати эти баги я искал интересно. Из вывода промежуточных данных стало ясно что шалит fft преобразование. Я написал скрипт который брал эталонный вывод из matlab-а, а потом сравнивал с выводом из octave который этот скрипт собирал с разными версиями fftw. Потом с нужной версией fftw свой бинарник и линковал. Быстрое фурье-преобразование — это целая маленькая наука, без которой обработка обработка многомерных массивов например, изображений была бы очень затруднительна. Я уже пробовал, но попробую еще раз. С чего можно начать идиоту, который провтыкал всю высшую математику, и до сих пор не понимает практического назначения интегралов и логарифмов? Назначение интегралов и логарифмов мы проходили в школе. Первые в 11 классе или в 10 — не помню , вторые пораньше 9, 8??? Если такие понятия непонятны — начать со чтения школьных учебников, википедии, сайтов обучающих навалом. А можно я вас спрошу — а вам сейчас зачем понадобились те и другие? Какие проблемы в жизни вы собираетесь с новыми знаниями решить? Вам нужно определиться с числом каналов, полосой частот, динамическим диапазоном и желаемым уровнем нелинейных искажений в аналоговом сигнале и после этого просто смотреть на подходящие модели и выбирать наиболее удобную. В плане размера потока цифровых данных, простую работу с аудиопотоком если не надо что-то хитрое вычислять сегодня осилит даже микроконтроллер: Работа с тем же USB может требовать намного большего потока данных. Но Вам лучше к специалистам обратиться, мои познания больше теоретические чем практические. Если Вы могли бы кого-либо посоветовать — был бы крайне признателен. Это в корне неверно. О дополнении нулями можно говорить, когда речь идёт о линейной свёртке посредством FFT нулями дополняется импульсная характеристика фильтра. Здесь же мы имеем бесконечное дублирование: Что позволяет ограничить спектр снизу и произвести вычисление только в рамках используемого окна. А преобразование как было бесконечным, так и осталось — и результат преобразования будет также бесконечным и также циклическим. А бесконечно оно и циклично в силу бесконечности и цикличности функций синус и косинус. Вот если бы речь шла о вейвлет-преобразованиях — тогда да, дополнение нулями имеет место быть, поскольку вейвлет имеет компактную форму by design собственно по этой причине вейвлет-преобразование и появилось. Если мы сделаем прямое БПФ, линейно сдвинем фазы, не трогая амплитуды, а затем сделаем обратное БПФ, то будем иметь уже такое: Вы повторяете распространенную ошибку основанную на наивной интерпретации преобразования Фурье Да, это верно что синус и косинус бесконечны и цикличны. Но проблема состоит в том что невозможно напрямую вычислить интеграл, скажем, от произведения двух синусов на действительной прямой. Я сейчас не буду вдаваться в функциональный анализ, но емнип любая попытка построения подобного обобщения все равно так или иначе идет через рассмотрение интегралов на конечных интервалах или в общем случае компактных многообразиях что в данном контексте означает тот же ноль на бесконечности и для практических вычислений подобные обобщения бесполезны. Кроме того измерить бесконечно длинный сигнал невозможно А вот у финитной функции преобразование Фурье вычислить можно. Нужно просто правильно понимать какие именно будут внесены искажения чтобы правильно анализировать результат который выдало преобразование Фурье. Поэтому, к слову говоря, и существуют разные оконные функции вносящие соответственно разные искажения — для разных задач удобен разный анализ. И в рамках этого подхода, пока мы работаем на действительной прямой, единственно верным подходом является дополнение нолями. Далее, у Вас похоже есть совершенно неверное представление о том что прямое преобразование Фурье даст нам разложение функции на сумму синусов и косинусов. Для дискретных преобразований была создана вариация которая похожа на преобразование Фурье, но отличается от него. Она подразумевает рассмотрение функций заданных не на бесконечной действительной прямой а на окружности конечной длины. Если я в чём и неправ — так это в том, что не указал явно, что речь идёт именно о дискретном преобразовании, считая это очевидным из контекста цитаты: Поскольку как только речь заходит о реальности , никаких непрерывных преобразований быть не может, поскольку мы должны выполнить его за конечное число вычислений, что доступно только на периодическом дискретном сигнале. Спектр, полученный в результате дискретного преобразования, также будет дискретным, и над ним также можно выполнить обратное преобразование и получить исходный сигнал. Что у вас не получится, если вы будете использовать дополнение нулями. Вообще, разницу между зацикливанием и дополнением нулями легко увидеть, если просто взять и посмотреть: Видно, что в первом случае мы получили дискретный спектр, а во втором — непрерывный. Поскольку как только речь заходит о реальности, никаких непрерывных преобразований быть не может, поскольку мы должны выполнить его за конечное число вычислений, А в том и состоит прелесть ДПФ что дискретное приближение к результату непрерывного ПФ можно вычислить с любой желаемой точностью через ДПФ с дополнением нулями: На любом дискретном сигнале конечной длины. Обратное преобразование от спектра посчитанного на сигнале с дополнением нолями просто даст исходный сигнал дополненный нолями. Собственно это просто вопрос того как интерпретировать набор чисел, а сам набор чисел и само применяемое к нему преобразование то одно и то же и результат и обратимость этого преобразования, естественно, от выбранной интерпретации не зависят. Видно что этот дискретный спектр — это просто подмножество непрерывного: При этом если выбранный нами наугад период сигнала не соответствует настоящему периоду, то мы еще и потеряем при этом информацию содержавшуюся в исходном сигнале. Видно что этот дискретный спектр — это просто подмножество непрерывного. Существует бесконечное множество непрерывных спектров, подмножеством которых является конкретно этот дискретный. И в контексте Фурье-анализа конкретно этот непрерывный спектр — вовсе не наилучший. В контексте Фурье-анализа нас могут интересовать разные свойства сигнала и да, для разных задач целесообразно выбирать разные оконные функции которые дадут разные спектры. Множество оконных функций не покрывает множество непрерывных спектров, подмножеством которых является единственный дискретный. Простите, я не понимаю к чему Вы ведете и что пытаетесь доказать. Я веду к тому, что дополнение нулями при рассмотрении БПФ — некорректно и к тому же ещё и бессмысленно, поскольку не добавляет никакой новой информации. Если же рассматривать задачу аппроксимации спектра — так это совсем другая задача. Если использовать дополнение нулями для анализа спектра оконных функций — так и это другая задача, а сами оконные функции — совершенно самостоятельный инструмент, вовсе не являющийся необходимым условием как для непрерывного, так и для дискретного ПФ. Я ниже привел простой и наглядный пример. Насчет корректности я советую сравнить точность результата с дополнением нолями с точностью результата с периодическим дополнением и немного подумать, если уж Вам из моих объяснений так и не стало понятно почему дополнять нолями не только корректно, но и единственно корректно. Взяли кусок сигнала, оцифровали — получили набор чисел. Дополнили нолями — получили второй набор чисел. Взяли ДПФ — получили третий набор чисел. Взяли обратное ДПФ — получили обратно второй набор чисел с дополнением нолями. Убрали дополнение нолями — получили первый набор чисел. Что именно в указанной цепочке у Вас вызывает сомнения? Ну если конкретно тут — Дополнили нолями — получили второй [бесконечный] набор чисел. А вот и не возьмёте, для ДПФ нужен конечный набор чисел. А если при ДПФ вы эти дополненные нули игнорируете — зачем их тогда вообще добавлять? С тем же результатом можно что угодно добавить, хоть нули, хоть единицы, хоть чёрта лысого. Дополнили конечным числом нолей. Чем больше добавим, тем точнее будет дискретное приближение непрерывного спектра точнее, тем больше будет в нём точек , но можно ограничиться любым их количеством. И да, в ДПФ добавление конечного числа нулей к входному сигналу меняет результат делает его более детализованным. Конкретно в моём примере это будет приближение вовсе не к тому спектру, который был изначально. Давайте глянем на простой пример import numpy as np import matplotlib. Так Вы говорите, правый спектр — это лучшее приближение к правильному, а нолями слева дополнять неправильно, да: В правом графике значение в точке Но его можно найти интерполяцией. Или свёрткой со спектром функции sinc. Или свёрткой со спектром прямоугольного окна, что у вас и получилось на левом графике. В правом графике прекрасно себе определено значение в точке Между чем и чем прикажете интерполировать? Дублирование сигнала перед БПФ — это лишь простой способ продемонстрировать дискретность спектра, а вовсе не инструкция к применению. А эти нули как раз-то и позволяют избавиться от бесконечного количества вычислений. Точно так же, как умножение любого числа на ноль даёт ноль. И точно так же, как и вычислив значение синуса в одной точке 0. Вы одновременно защищаете так много тезисов и так легко переключаетесь между ними что я предлагаю остановиться и зафиксировать два простых момента. К слову говоря, в np. Потому что Вы вроде как с этими двумя пунктами вначале спорили, а потом промолчали в отношении моих примеров и объяснений доказывающих эти два тезиса. Надёжный — да, если это ядро FIR-фильтра и нет, если это сигнал для гармонического анализа. Дополнение конечным количеством — да, равно как и любыми другими отличными от нуля числами. Дополнение бесконечным количеством, чтобы объяснить переход от конечного во времени сигнала к бесконечному и непрерывному преобразованию — нет. Если под доказательством вы подразумеваете невозможность взятия интеграла синуса на бесконечности, то я счёл его некорректным, поскольку ПФ от синуса прекрасно берётся. Поскольку значения между дискретным значениями не определены по определению вообще, а не только для дискретного спектра , мы можем определить их при необходимости одним из инструментов интерполяции. Тогда давайте вернемся к исходному примеру. Обратите внимание на то что результат анализа спектра при дописывании нолей соответствует ожидаемому. В моем примере мы имеем чистый синусоидальный сигнал информация о котором доступна на отрезке времени длиной 0. Давайте проведем простой мысленный эксперимент: Вместо 10 точек возьмем , 1. Дискретизация же происходит уже после окна и дает другие эффекты. Пульсации в спектре сигнала из одной частоты лично я не могу назвать ожидаемыми. Если бы передо мной встала такая задача, я бы в первую очередь попробовал кусочную кубическую интерполяцию между комплексными частотами в логарифмическом масштабе. Затем то же, но по логарифмическим амплитудам. А я напомню, что поскольку сигнал за пределами этого отрезка не определён, существует бесконечное множество спектров, сигналы с которыми конкретно в этом отрезке времени будут иметь одни и те же значения. И та частота, которую вы рассматриваете, вовсе не обязательно будет иметь в этих спектрах максимальную амплитуду. Исходный спектр — две дельта-функции. На этапе когда идет обрезка непрерывного сигнала до кусочка длиной 0. Функция sinc не является финитной, поэтому sinc-и соответствующие плюсовой и минусовой частотам влияют друг на друга — это и дает смещение пика по амплитуде и частоте. Прошу прощения, но к чему этот пример? Он может разве что служить свидетельством ненадежности Вашего метода — стоит неверно выбрать период и на выходе вместо ожидаемого единственного пика получаем мусор: Другими словами Вы бы наугад занимались эмпирикой, а на практике этого не делали, правильно? В огороде бузина, а в Киеве дядька. При чем тут Котельников? Представьте что у Вас есть непрерывная функция синус. Вообще без дискретизации, но обрезанная до отрезка длиной 0. Я утверждаю что ее спектр непрерывный будет в точности тем который дает дискретное ПФ и поясняю это на примере бесконечного увеличения числа точек которыми задается функция. В терминах Котельникова я предлагаю бесконечно увеличить частоту дискретизации и посмотреть на предел к которому при этом стремится спектр получаемый в дискретном преобразовании. Только к чему Вы это? Вы просили пример, я его привёл. Что значит наугад, какая эмпирика? А поиском частоты с максимальной амплитудой да, заниматься не приходилось, использую ДПФ совсем для других задач. Вероятно при том, что пока частота синусоиды вдвое меньше частоты дискретизации, она восстанавливается без искажений. Видимо, я Вас не так понял. К неоднозначности Фурье-анализа на ограниченном промежутке времени. Я просил пример где дополнение нулями не работает. А оно-то как раз в Вашем примере работает. Независимо от частоты сигнала и длительности периода наблюдения Вы получите sinc примерно соответствующий исходному сигналу. В отличие от наивной попытки посмотреть на дискретный спектр или дополнить сигнал периодически 3. Это верно только для дискретного сигнала бесконечной длины: Я утверждаю что спектр который выдает ДПФ при дополнении нолями и который я Вам показывал выше стремится к спектру непрерывной синусоиды обрезанной на наш интервал. То есть дискретизация не играет здесь существенной роли, а вот обрезка сигнала на аналоговый отрезок — играет. Как следствие если нас интересует спектр исходного непрерывного сигнала, то и смотреть надо на спектр получающийся на выходе ДПФ при дополнении исходного сигнала нолями. Не Вы ли мне говорили чуть выше что все реальные сигналы ограничены: Идеальная реконструкция по Котельникову конечно требует бесконечной длины сигнала, но реальные конечные приближения легко дают хотя и не идеальную, но отличную аппроксимацию. Я привёл пример, в котором амплитуда зависит от фазы. Очевидно, так быть не должно. Я говорил, что их бесконечное множество и оптимальный вариант будет разным в зависимости от задачи. Поэтому вы не вправе говорить, что дополнение нулями что есть по сути прямоугольное окно — единственно правильное решение. Оно может быть подходящим в одних случаях и совершенно неприемлемым в других. Он стремится по той же причине, по которой и сам сигнал стремится, это само собой. Если сигналы совпадают, то и их спектры совпадают. А Вы, простите, не пробовали взять код который я привел выше и подставить туда изменение фазы: Если Вас интересует спектр непрерывной функции после ее обрезки на доступный период измерений, конечно то дополнение нолями дает именно его. Конечно это не единственный возможный вариант, но обычно именно этот является ожидаемым: Это очень специальное пространство сильно отличающееся от R, я же говорю. Почти — это субъективная оценка. Объективно не зависит — это когда вообще никак не зависит. Ожидание — это субъективная оценка. Вы ожидаете одно, а я — совсем другое. Только в ДПФ ему взяться неоткуда. А с чего вдруг оно объективно должно вообще не зависеть? Возьмете более короткий отрезок измерения — погрешность будет больше. Возьмете более длинный — меньше. Это хорошо известное соотношение неопределенностей: Потому что вы оперируете с n-мерными векторами чисел абсолютно без какой-либо привязки к непрерывным функциям. К примеру у Вас вообще не существуют синусоидальные сигналы период которых не кратен шагу дискретизации. Вот нету их просто и всё. При этом Вы с чего-то решили что можете поучать других! Давайте сворачивать на этом дискуссию. Моя позиция здесь совершенно не причём. Я лишь выражаю своё понимание ДПФ, сформировавшегося под влиянием некоторого количества литературы и собственных экспериментов, а также программирования функций для FFT и FHT. Если в моём понимании есть неточности, то я только буду рад от них избавиться. ДПФ мне интересен как инструмент, а не средство самоутверждения. ДПФ — это самостоятельный инструмент, и его вовсе не обязательно привязывать к непрерывному аналоговому сигналу. Как минимум потому, что существуют данные, дискретные по своей природе — например, последовательность бит. У ДПФ есть и менее очевидные приложения — например, умножение длинных чисел или подсчёт клеток в клеточном автомате. Если бы ваша статья называлась " Спектральный анализ сигналов " — тогда этой дискуссии, возможно, и не было бы. Циклическое заворачивание свертки при ее реализации через ДПФ значительно чаще является недостатком чем достоинством. А так конечно да, ДПФ используется и как самостоятельный инструмент для обработки векторов чисел, я с этим и не спорю. И да, кое-где циклическая свертка может быть плюсом. Но я в статье рассказывал о семействе преобразований Фурье, включая непрерывные его варианты, а непрерывное к дискретному, так уж получилось, привязывается сугубо через дополнение нолями. Ваш пример скорее доказывает обратное. Здесь дополнение нулями используется для резервирования места под результат, а не приближения спектра к непрерывному. И дополнение нулей сверх необходимого не даст ничего, кроме увеличения погрешности вычисления. А по вопросу дискуссии есть и мнения со стороны: But the DTFT is difficult to evaluate on a computer, since a computer works only on finite number of points. So to make the evaluation of the DTFT possible on a computer, we choose a finite number of frequency points. Since the DFT is basically the sampled version of the DTFT, it is also periodic , with period N the number of frequency samples taken. Так мы о каком-либо спектре в данном случае вообще не говорим. DFT здесь используется чисто как некоторое преобразование над вектором чисел с некими интересными свойствами. Вспомните с чего началась дискуссия. Я Вам уже разобрал случай когда ДПФ используется для оценки спектра непрерывного сигнала. Я опроверг Ваше неверное утверждение о том что якобы при дополнении нолями обратное ДПФ не позволит восстановить исходную последовательность. Сейчас мы дошли до вариантов использования ДПФ где о спектре вообще говорить бессмысленно — но даже там широко применяется дополнение нолями. Да, я в курсе что ДПФ можно трактовать как некий специальный случай ПФ для периодических функций особого вида. Да я в курсе что есть люди которые считают что это единственная возможная трактовка, причем не для реального случая функций на окружности а для функций заданных на R. Нет, это не делает их точку зрения правильной. Причем я же ведь даже не против подобного определения ДПФ, оно как я уже писал в некоторых аспектах удобнее, просто Вы же его распространяете на ситуацию где это определение уже не применимо и из него неверные выводы делаете относительно дополнения нолями. Предположим, я неправ, а Вы — правы. Тогда бы Вы смогли сформулировать ответ таким образом, что мне и сторонним наблюдателям моё заблужение стало бы очевидным. Предположим, я прав, а Вы — неправы. Тогда я выступаю в роли нападающего, который ставит под сомнение Вашу квалификацию, а вы вынуждены защищаться. Предположим, мы оба правы. Тогда имеет место быть неточная подача материала, допускающая неоднозначную трактовку. На мой взгляд подобное определение в отрыве от контекста бессмысленно. Далее, я не очень понимаю к чему Вы несколько раз упоминаете про невычислимое продолжение нолями в бесконечность. Продолжение нолями в бесконечность а точнее зануление сигнала вне некоторого отрезка относится к аналоговому сигналу и позволяет рассчитать непрерывный спектр ПФ дискретного времени для аналогового сигнала конечной длины. ДПФ с продолжением нолями на любой конечный интервал — это просто способ посчитать равномерно распределенное дискретное подмножество точек из этого спектра. А так-то я с Вами не спорил вроде нигде что не надо бездумно дописывать ноли ко входу ДПФ везде и всюду. Я согласен с пунктами а, б и тем что это не единственная операция для гармонического анализа. Я говорил лишь что а Это то что надо делать для сигналов конечной длительности б Это позволяет эффективно посчитать через БПФ сколь угодно точное приближение непрерывного спектра ПФ дискретного времени в Дополнение нолями вообще является типовой операцией для БПФ она вообще говоря вроде возникает везде где нет явной и точно известной периодичности в исходных данных. Спектр дискретной функции как правило является непрерывным. Спектр дискретной функции дискретный по определению. С тем же успехом вы могли бы сказать, например, применительно к теореме Ферма: Не вижу по вашей ссылке подтверждения ваших слов. А Вы свои ссылки, простите, читаете? The discrete-time Fourier transform, on the other hand, maps functions with discrete time discrete -time signals to functions that have a continuous frequency domain. Там-то речь о ДПФ на бесконечном промежутке времени. А тут мы с самого начала говорим об ограниченном во времени сигнале. Наш исходный дискретный сигнал ограничен частотами от 0 до f. Чем больше значений мы берём для ДПФ, тем больше у нас дискретных значений между 0 и f, и соответственно, тем меньше расстояние между ними. Следовательно в пределе получаем непрерывность. К примеру последовательности данных идущих с выхода АЦП на вход которого поступает аналоговый синус. Как именно эту последовательность обрезать для обработки — решаем мы сами. Это не некое божественное откровение данное сверху, это наша собственная аппроксимация которую мы делаем чтобы ограничить время захвата данных и объем вычислений. Спектром выбранного вами вектора чисел, надо полагать, потому что ни со спектром сигнала идущего с выхода АЦП ни тем более спектром исходного аналогового сигнала он не является. Ну и дальше занимаетесь религиозным поучением того что исходный вектор чисел нельзя дополнять нолями потому что это же даст другой спектр! Ну и что, говорите вы, что он будет иметь со спектром исходного аналогового сигнала намного больше общего? Это другой спектр и точка. Своим дополнением нулями по сути — умножением на прямоугольное окно вы как раз и сделали эту свёртку. Это можно было бы сделать и наоборот — сначала прямое БПФ, вставить нули, сделать обратное БПФ, умножить на прямоугольное окно. Но я Вас спрашивал почему ответ получился при этом правильным: И я, надеюсь, Вы не будете спорить что дописывание нолей перед FFT — операция на порядок более простая чем попытки делать свертку самому? Я, если честно, не увидел у вас правильного ответа. На графике — 5, макс. Если Вы посмотрите код, то убедитесь что я не заморачивался с нормировкой. Для прямоугольного окна длины N и дефолтной нормировки используемой numpy. Контр-пример пока привести не могу, так как не имею готовых решений для подобного типа задач. Любая конечная сумма синусов и косинусов бесконечна и периодична Вот вам пример: Да, знаю, неудачно выразился. Непрерывное ПФ не ограничивает частоты кратным целым числам. Дискретное ограничивает, а про непрерывное я собственно и писал Вам что там не обязательно будет периодичность. Про непрерывное вы писали, что дополнение нулями — это обязательное условие для того, чтобы ПФ могло быть вычислено. Вернёмся к вашему примеру. Имеем 10 точек синусоиды Видно, что максимум сигнала с дополненными нулями находится достаточно близко к оригинальной частоте. А теперь возьмём и добавим ещё одну синусоиду с частотой Видно, что максимум сместился от первоначального положения. А теперь добавим ещё больше нулей, до Видно, что на точность это никак не повлияло. А теперь самое интересное. И в первом, и во втором случае мы имеем 5 локальных максимумов. Как отличить, являются эти максимумы лепестками или же реальными частотными составляющими? Ну, конкретно в Вашем примере разница в 10 дБ между основными пиками и побочными довольно прозрачно намекает какие пики основные: Но можно для контроля использовать оконные функции у которых сильно подавлены боковые лепестки. К примеру банально домножить исходную последовательность на окно Ханна Для настолько короткой последовательности основные лепестки получаются как Вы можете видеть очень широкими и для нашей пары частот они сливаются, мешая точно определить частоту, амплитуду и фазу сигнала. Но для подсчета количества реально существующих синусоид — самое оно. Побочные лепестки настолько малы что основной сигнал с ними перепутать невозможно. В общем же случае подобная задача не всегда имеет решение. Для разделения сигналов с близкими частотами или сигналов с сильно разными амплитудами или если в спектре много синусоид длины сигнала может просто-напросто не хватить. В соответствии с всё той же теоремой о свёртке , умножение во временной области равносильно свёртке в частотной. А поскольку сворачиваются именно комплексные частоты, а не их модули амплитуды , результат может довольно сильно отличаться от ожидаемого. Возьмём к примеру вот такой сигнал длиной семплов: При умножении его на окно Ханна и дополнении нулями до получим следующее красным: Как видно, результирующая АЧХ весьма слабо напоминает оригинальную. Прошу прощения, но о какой оригинальной АЧХ идет речь? Добавлю картинку для наглядности: Чем длиннее доступный отрезок времени измерения, чем больше частота дискретизации, чем больше вычислительные ресурсы — тем точнее можно сделать это приближение. Верны следующие утверждения 1. Ну так да, он может конечно изменяться. Только он, простите, будет меняться и при изменении отрезка измерения как при изменении длины отрезка так и при его сдвиге , и при изменении частоты дискретизации. Вы уверены что Вы хотите ввести определение спектра сигнала именно подобным образом? Я не ввожу никаких новых новых определений, а всего лишь использую готовые и устоявшиеся. Так с этим никто и не спорит. Однако преобразование Фурье — это чисто математическая операция, которая переводит time domain в frequency domain и к никаким сигналам по умолчанию не привязана. Это ничего не изменит. Вот что например пишут про преобразование Фурье вот здесь: В спектральном анализе исследуются периодические модели данных. Цель анализа — разложить комплексные временные ряды с циклическими компонентами на несколько основных синусоидальных функций с определенной длиной волн. Предположим, вы изучаете луч белого солнечного света, который, на первый взгляд, кажется хаотически составленным из света с различными длинами волн. Однако, пропуская его через призму, вы можете отделить волны разной длины или периодов, которые составляют белый свет. Фактически, применяя этот метод, вы можете теперь распознавать и различать разные источники света. Таким образом, распознавая существенные основные периодические компоненты, вы узнали что-то об интересующем вас явлении. В сущности, применение спектрального анализа к временным рядам подобно пропусканию света через призму. В результате успешного анализа можно обнаружить всего несколько повторяющихся циклов различной длины в интересующих вас временных рядах, которые, на первый взгляд, выглядят как случайный шум. Наиболее известный пример применения спектрального анализа — циклическая природа солнечных пятен например, см. Блумфилд, или Шамвэй, Оказывается, что активность солнечных пятен имеет ти летний цикл. Другие примеры небесных явлений, изменения погоды, колебания в товарных ценах, экономическая активность и т. Допустим, мы анализируем колебания цен на хлеб. Сегодня он стоит 20 р. Однако не было момента сегодня ночью, когда он стоил Также как и много лет ранее не было момента, когда он стоил 0 р. Вот комментарии по существу, с ссылками и графиками, а не саркастическими тегами и мёртвыми котятами. Обсуждается тема, традиционно сложная для понимания. Рассмотрение её с диаметрально противоположных сторон оставляет возможность для дискуссии. Возможно, случайный Читатель сможет почерпнуть из этих комментариев не только моих чуть больше, чем из основной статьи. Для меня остался непонятным вот такой момент. Преобразование Фурье определено в поле комплексных чисел. Какие сигналы имеют комплексную природу? Для каких комплексных данных оно используется на практике? Аналитический сигнал не считается, поскольку он изначально является искусственным. Фронт монохроматичной световой волны, например. Есть очень любопытные применения преобразования Фурье в оптике где это используется. Но какая, собственно, разница? Ну не для каждого человека очевидно, зачем при анализе действительной функции переходить в комплексную плоскость. Я у себя на домашней страничке написал про это преобразование Фурье, про ряды Фурье, про дискретное преобразование Фурье — https: Если есть конструктивные замечания — пишите. Прочитал первую часть с большим удовольствием, написано отлично, читается легко и отличается точными и глубокими формулировками. Примерно соответствует по духу и объему изложению теории на мехмате МГУ — Вы случайно не там учились: Однако часть посвященная непрерывному ПФ выглядит достаточно слабой. ИМХО все же любое рассмотрение ПФ без хотя бы базового понимания обобщенных функций является неполноценным. При этом в контексте ПФ у обобщенных функций есть очень простое объяснение: Это очень часто встречающаяся концепция в физике. Допустим что у нас есть к примеру такая штука как равномерно заряженная проводящая сфера радиусом 1 метр содержащая заряд 1 кулон. Штука довольно интуитивно понятная: Но как её можно описать математически? Мы не можем написать никакой функции вида q x которая бы возвращала бы нам заряд q для точки пространства x. Математика дает на удивление простой ответ: Теорвер здесь шустро уходит в область теорий мер на множествах, но вместо этого можно сказать что w можно задать тоже функцией, к примеру, равной единице внутри области и нулю вне её. Но что это могут быть за свойства? Понятие распределения легко соотносится с целой кучей физических сущностей и имеет огромное значение для решения многих дифференциальных уравнений. А дальше можно рассказывать про свойства ПФ для распределений — там все очень красиво и изящно. И в числе этих результатов оказывается что дискретное ПФ можно рассматривать как частный случай этого непрерывного ПФ для распределений. Спасибо большое за комментарии по улучшению, и спасибо за доп. Если будут ещё — пишите Я учился в МГТУ Баумана, но знания по этой теме получили из курса в Стенфорде от проф. Я разделил на кусочки статью — для всех part I. Я лишь изредка касался вопросов про классы функций как в Q Про распределения есть в https: Я работаю в NVIDIA программистом, и у нас есть такой бонус с курсами в Стенфорде. В Гугле есть тоже похожая штука. В своём родном университете я учился на программиста и там не очень уделяли внимание функциональным преобразованиям как преобразование Лапаса, и преобразование Фурье для студентов по крайней мере моей кафедры ИУ-7 p. Я не знал, что на Хабре есть ограничение по времени на редактирование комментария. Из прочих замечаний по первой части: Существует более одного определения что такое ПФ, отличающиеся только множителем нормировочным коэффициентом. Метки лучше разделять запятой. Сейчас Вчера Неделя Как создать виртуальную машину в Google Таблицах 5,4k 9. Муда брака 12,3k Интересные публикации Хабрахабр Geektimes. Яндекс открывает технологию машинного обучения CatBoost. Как устроено расписание электричек. Cisco Meeting Server — теперь вся видео-конференц-связь из одного места. Ночные контактные линзы для тех, кто не носит очки, но боится при этом коррекции GT. Разбираемся в физике частиц: Мы нашли спутник МАЯК на орбите GT. Разделы Публикации Хабы Компании Пользователи Песочница. Информация О сайте Правила Помощь Соглашение Конфиденциальность. Услуги Реклама Тарифы Контент Семинары.


Нетбук asus eee pc 1015b характеристики
Ювелирный магазин бирюза в гродно каталог
Преобразование Фурье
Вальгусная деформация стопы массаж видео
Сонник родила двух девочек
Схема предохранителей мазда 6 2008 года
Арифметическим способом целая книга
Как найти на карте код безопасности
Скрыть ссылку на сайте
Где взять егрп на квартиру
Как женить водолея мужчину
Каталог кухни хофф ростов
Дискретное преобразование Фурье
Правый берег запорожье
Как подключить компьютер к компьютеру через usb
Пенсияв мире таблица
Много идей ком
Легкий стих бунина
Оконное преобразование Фурье
Характеристика признаков систем
У котенка третье веко что делать
Образцы заполнения бланков на паспорт
Можно ли делать хиджама
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment