небольшое лирическое отступление, не имеющие никакого отношения к вопросу дискуссии
Уже сам факт наличия этой чрезмерно затянувшейся дискуссии говорит о том, что присутствует непонимание с обоих сторон вне зависимости от того, кто прав, правы ли оба или же не прав никто.
Предположим, я неправ, а Вы — правы. Тогда бы Вы смогли сформулировать ответ таким образом, что мне (и сторонним наблюдателям) моё заблужение стало бы очевидным.
Предположим, я прав, а Вы — неправы. Тогда я выступаю в роли нападающего, который ставит под сомнение Вашу квалификацию, а вы вынуждены защищаться.
Предположим, мы оба правы. Тогда имеет место быть неточная подача материала, допускающая неоднозначную трактовку.
Так мы о каком-либо спектре в данном случае вообще не говорим. DFT здесь используется чисто как некоторое преобразование над вектором чисел с некими интересными свойствами.
Как это не говорим? Я получаю спектры сигнала, перемножаю их комплексно и делаю обратное преобразование, всё по науке.
По остальному. Я уже неоднократно подчёркивал, что все мои комментарии написаны в контексте конечного числа вычислений ДПФ. Дополнение нулями в бесконечность сделают это невозможным.
Я вовсе не отрицаю операцию дополнения нулями в бесконечность конечного сигнала. Я хотел сказать, что:
а) её не нужно привязывать к ДПФ по-умолчанию,
б) её не нужно рассматривать саму по себе, вне контекста задачи,
в) для гармонического анализа части известного сигнала (как конечного, так и бесконечного) дополнение нулями — не единственная и не самая лучшая операция.
Если мы к конечному сигналу применяем FIR-фильтр, то размер сигнала увеличивается на длину ядра-1.
Если мы к конечному сигналу применяем физически реализуемвй IIR-фильтр, то размер сигнала становится бесконечным в одну сторону.
Если же мы меняем спектр конечного сигнала произвольно, то он автоматически становится бесконечным в обе стороны.
В теории схемотехники удобнее манипулировать именно произвольными операциями над спектром, поэтому и требуется бесконечное дополнение. Но далеко не всё из теории реализуемо на практике в аналоговом исполнении — например, сдвиг фаз всех частот на 90°.
Нули здесь фигурируют только потому, что операции наши — интегральные, а сигнал или его часть рассматриваются самостоятельно, и играют роль «начальной инициализации». Если бы мы использовали мультипликативные операции, то у нас были бы уже не нули, а единицы.
Та же свёртка через БПФ производится не за один раз, а кусочно с перекрытием. И вот в месте перекрытия у нас происходит дополнение не нулями, а «хвостом» от предыдущей свёртки.
Ваш пример скорее доказывает обратное.
Здесь дополнение нулями используется для резервирования места под результат, а не приближения спектра к непрерывному. И дополнение нулей сверх необходимого не даст ничего, кроме увеличения погрешности вычисления.
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).
Моя позиция здесь совершенно не причём.
Я лишь выражаю своё понимание ДПФ, сформировавшегося под влиянием некоторого количества литературы и собственных экспериментов, а также программирования функций для FFT и FHT.
Если в моём понимании есть неточности, то я только буду рад от них избавиться. ДПФ мне интересен как инструмент, а не средство самоутверждения.
ДПФ — это самостоятельный инструмент, и его вовсе не обязательно привязывать к непрерывному аналоговому сигналу. Как минимум потому, что существуют данные, дискретные по своей природе — например, последовательность бит. У ДПФ есть и менее очевидные приложения — например, умножение длинных чисел или подсчёт клеток в клеточном автомате.
Конечно, читаю.
Там-то речь о ДПФ на бесконечном промежутке времени.
А тут мы с самого начала говорим об ограниченном во времени сигнале.
Наш исходный дискретный сигнал ограничен частотами от 0 до f.
Чем больше значений мы берём для ДПФ, тем больше у нас дискретных значений между 0 и f, и соответственно, тем меньше расстояние между ними. Следовательно в пределе получаем непрерывность.
Примечание к изображению ноты.
Если читать по русски c♯, это прозвучит как «си диез». А изображена — до диез. А всё потому, что нота «до» обозначается буквой «С». Такой вот любопытный нюанс.
2. Я привёл пример, в котором амплитуда зависит от фазы. Очевидно, так быть не должно.
3. Я ничего не говорил про выбор «наугад». Я говорил, что их бесконечное множество и оптимальный вариант будет разным в зависимости от задачи. Поэтому вы не вправе говорить, что дополнение нулями (что есть по сути прямоугольное окно) — единственно правильное решение. Оно может быть подходящим в одних случаях и совершенно неприемлемым в других.
4.1. Он стремится по той же причине, по которой и сам сигнал стремится, это само собой. Если сигналы совпадают, то и их спектры совпадают.
4,5 Как Вы сами и указали, если пространство закольцовано, бесконечность уже не требуется.
С тем же успехом вы могли бы сказать, например, применительно к теореме Ферма:
«Вы зря зацикливаетесь на натуральных числах. Натуральные числа, как правило, действительные»
4.2. Если ставить вопрос как «можно ли аппроксимировать дискретный спектр непрерывным таким образом, чтобы при обратном ПФ получить дополнение нулями» — то да, можно.
2. Вы просили пример, я его привёл.
3. Что значит наугад, какая эмпирика? Интерполяция вполне научна. А поиском частоты с максимальной амплитудой да, заниматься не приходилось, использую ДПФ совсем для других задач.
4. Вероятно при том, что пока частота синусоиды вдвое меньше частоты дискретизации, она восстанавливается без искажений. Видимо, я Вас не так понял.
4.1. т.е. Вы утверждаете, что непрерывный спектр синусоиды, обрезанный на произвольном интервале и дополненный нулями в бесконечность, в пределе будет равен спектру просто синусоиды?
5.1. К неоднозначности Фурье-анализа на ограниченном промежутке времени.
1. Не факт. Пульсации в спектре сигнала из одной частоты лично я не могу назвать ожидаемыми.
2. Легко. Синусоида, период которой равен 15 семплам, при DFT=15 даст в спектре только одну составляющую. А при DFT=16 уже нет, особенно если она будет сдвинута по фазе.
3. Если бы передо мной встала такая задача, я бы в первую очередь попробовал кусочную кубическую интерполяцию между комплексными частотами в логарифмическом масштабе. Затем то же, но по логарифмическим амплитудам. Затем, возможно, и рациональную интерполяцию, но на бо́льшем количестве точек.
Вы утверждаете что дискретизация «портит» этот сигнал и делает его принципиально отличным от непрерывного синуса известного на том же временном промежутке.
Не помню такого. В вопросе дискретизации непрерывных сигналов я придерживаюсь классической позиции Котельникова/Найквиста/Шеннона.
4,5 Это всё прямо следует из теоремы Котельникова.
5.1. А я напомню, что поскольку сигнал за пределами этого отрезка не определён, существует бесконечное множество спектров, сигналы с которыми конкретно в этом отрезке времени будут иметь одни и те же значения. И та частота, которую вы рассматриваете, вовсе не обязательно будет иметь в этих спектрах максимальную амплитуду.
1. Простой — да. Надёжный — да, если это ядро FIR-фильтра и нет, если это сигнал для гармонического анализа.
2. Дополнение конечным количеством — да, равно как и любыми другими отличными от нуля числами. Дополнение бесконечным количеством, чтобы объяснить переход от конечного во времени сигнала к бесконечному и непрерывному преобразованию — нет.
Если под доказательством вы подразумеваете невозможность взятия интеграла синуса на бесконечности, то я счёл его некорректным, поскольку ПФ от синуса прекрасно берётся.
Я не вижу более внятного объяснения «дискретности спектра», если мы и так уже имеем дискретное преобразование над дискретным сигналом, дающим на выходе дискретный спектр.
Поскольку значения между дискретным значениями не определены по определению (вообще, а не только для дискретного спектра), мы можем определить их (при необходимости) одним из инструментов интерполяции.
И как же так получается что «некорректное и бессмысленное» дополнение нолями дает правильный ответ причем очень простым и удобным способом не требующим никакой интерполяции или свертки?
Своим дополнением нулями (по сути — умножением на прямоугольное окно) вы как раз и сделали эту свёртку.
Оно не определено. Дублирование сигнала перед БПФ — это лишь простой способ продемонстрировать дискретность спектра, а вовсе не инструкция к применению. А эти нули как раз-то и позволяют избавиться от бесконечного количества вычислений. Точно так же, как умножение любого числа на ноль даёт ноль. И точно так же, как и вычислив значение синуса в одной точке 0.1, мы одновременно вычисляем значение синуса во всех точках 0.1+2*pi*k
В правом графике значение в точке 15.32 попросту не определено, поскольку находится в промежутке между соседними дискретными. Но его можно найти интерполяцией. Например, линейной. Или свёрткой со спектром функции sinc. Или свёрткой со спектром прямоугольного окна, что у вас и получилось на левом графике.
(на видео тест наушников за 2749$)
Предположим, я неправ, а Вы — правы. Тогда бы Вы смогли сформулировать ответ таким образом, что мне (и сторонним наблюдателям) моё заблужение стало бы очевидным.
Предположим, я прав, а Вы — неправы. Тогда я выступаю в роли нападающего, который ставит под сомнение Вашу квалификацию, а вы вынуждены защищаться.
Предположим, мы оба правы. Тогда имеет место быть неточная подача материала, допускающая неоднозначную трактовку.
Как это не говорим? Я получаю спектры сигнала, перемножаю их комплексно и делаю обратное преобразование, всё по науке.
По остальному. Я уже неоднократно подчёркивал, что все мои комментарии написаны в контексте конечного числа вычислений ДПФ. Дополнение нулями в бесконечность сделают это невозможным.
Я вовсе не отрицаю операцию дополнения нулями в бесконечность конечного сигнала. Я хотел сказать, что:
а) её не нужно привязывать к ДПФ по-умолчанию,
б) её не нужно рассматривать саму по себе, вне контекста задачи,
в) для гармонического анализа части известного сигнала (как конечного, так и бесконечного) дополнение нулями — не единственная и не самая лучшая операция.
Если мы к конечному сигналу применяем FIR-фильтр, то размер сигнала увеличивается на длину ядра-1.
Если мы к конечному сигналу применяем физически реализуемвй IIR-фильтр, то размер сигнала становится бесконечным в одну сторону.
Если же мы меняем спектр конечного сигнала произвольно, то он автоматически становится бесконечным в обе стороны.
В теории схемотехники удобнее манипулировать именно произвольными операциями над спектром, поэтому и требуется бесконечное дополнение. Но далеко не всё из теории реализуемо на практике в аналоговом исполнении — например, сдвиг фаз всех частот на 90°.
Нули здесь фигурируют только потому, что операции наши — интегральные, а сигнал или его часть рассматриваются самостоятельно, и играют роль «начальной инициализации». Если бы мы использовали мультипликативные операции, то у нас были бы уже не нули, а единицы.
Та же свёртка через БПФ производится не за один раз, а кусочно с перекрытием. И вот в месте перекрытия у нас происходит дополнение не нулями, а «хвостом» от предыдущей свёртки.
Здесь дополнение нулями используется для резервирования места под результат, а не приближения спектра к непрерывному. И дополнение нулей сверх необходимого не даст ничего, кроме увеличения погрешности вычисления.
А по вопросу дискуссии есть и мнения со стороны:
Я лишь выражаю своё понимание ДПФ, сформировавшегося под влиянием некоторого количества литературы и собственных экспериментов, а также программирования функций для FFT и FHT.
Если в моём понимании есть неточности, то я только буду рад от них избавиться. ДПФ мне интересен как инструмент, а не средство самоутверждения.
ДПФ — это самостоятельный инструмент, и его вовсе не обязательно привязывать к непрерывному аналоговому сигналу. Как минимум потому, что существуют данные, дискретные по своей природе — например, последовательность бит. У ДПФ есть и менее очевидные приложения — например, умножение длинных чисел или подсчёт клеток в клеточном автомате.
Если бы ваша статья называлась "Спектральный анализ сигналов" — тогда этой дискуссии, возможно, и не было бы.
3. Ожидание — это субъективная оценка. Вы ожидаете одно, а я — совсем другое.
4.5. Согласен. Только в ДПФ ему взяться неоткуда.
Там-то речь о ДПФ на бесконечном промежутке времени.
А тут мы с самого начала говорим об ограниченном во времени сигнале.
Наш исходный дискретный сигнал ограничен частотами от 0 до f.
Чем больше значений мы берём для ДПФ, тем больше у нас дискретных значений между 0 и f, и соответственно, тем меньше расстояние между ними. Следовательно в пределе получаем непрерывность.
Если читать по русски c♯, это прозвучит как «си диез». А изображена — до диез. А всё потому, что нота «до» обозначается буквой «С». Такой вот любопытный нюанс.
3. Я ничего не говорил про выбор «наугад». Я говорил, что их бесконечное множество и оптимальный вариант будет разным в зависимости от задачи. Поэтому вы не вправе говорить, что дополнение нулями (что есть по сути прямоугольное окно) — единственно правильное решение. Оно может быть подходящим в одних случаях и совершенно неприемлемым в других.
4.1. Он стремится по той же причине, по которой и сам сигнал стремится, это само собой. Если сигналы совпадают, то и их спектры совпадают.
4,5 Как Вы сами и указали, если пространство закольцовано, бесконечность уже не требуется.
С тем же успехом вы могли бы сказать, например, применительно к теореме Ферма:
«Вы зря зацикливаетесь на натуральных числах. Натуральные числа, как правило, действительные»
3. Что значит наугад, какая эмпирика? Интерполяция вполне научна. А поиском частоты с максимальной амплитудой да, заниматься не приходилось, использую ДПФ совсем для других задач.
4. Вероятно при том, что пока частота синусоиды вдвое меньше частоты дискретизации, она восстанавливается без искажений. Видимо, я Вас не так понял.
4.1. т.е. Вы утверждаете, что непрерывный спектр синусоиды, обрезанный на произвольном интервале и дополненный нулями в бесконечность, в пределе будет равен спектру просто синусоиды?
5.1. К неоднозначности Фурье-анализа на ограниченном промежутке времени.
2. Легко. Синусоида, период которой равен 15 семплам, при DFT=15 даст в спектре только одну составляющую. А при DFT=16 уже нет, особенно если она будет сдвинута по фазе.
3. Если бы передо мной встала такая задача, я бы в первую очередь попробовал кусочную кубическую интерполяцию между комплексными частотами в логарифмическом масштабе. Затем то же, но по логарифмическим амплитудам. Затем, возможно, и рациональную интерполяцию, но на бо́льшем количестве точек.
Не помню такого. В вопросе дискретизации непрерывных сигналов я придерживаюсь классической позиции Котельникова/Найквиста/Шеннона.
4,5 Это всё прямо следует из теоремы Котельникова.
5.1. А я напомню, что поскольку сигнал за пределами этого отрезка не определён, существует бесконечное множество спектров, сигналы с которыми конкретно в этом отрезке времени будут иметь одни и те же значения. И та частота, которую вы рассматриваете, вовсе не обязательно будет иметь в этих спектрах максимальную амплитуду.
2. Дополнение конечным количеством — да, равно как и любыми другими отличными от нуля числами. Дополнение бесконечным количеством, чтобы объяснить переход от конечного во времени сигнала к бесконечному и непрерывному преобразованию — нет.
Если под доказательством вы подразумеваете невозможность взятия интеграла синуса на бесконечности, то я счёл его некорректным, поскольку ПФ от синуса прекрасно берётся.
Я не вижу более внятного объяснения «дискретности спектра», если мы и так уже имеем дискретное преобразование над дискретным сигналом, дающим на выходе дискретный спектр.
Поскольку значения между дискретным значениями не определены по определению (вообще, а не только для дискретного спектра), мы можем определить их (при необходимости) одним из инструментов интерполяции.