Сумма двух синусоидальных сигналов.

Я где-то в предыдущих постах давал ссылку. Там все написано.
Теорема Найквиста-Котельникова: Fd>2*F... Больше, а не равна... Если была бы равна 2*F, то существовала бы вероятность попадания моментов взятия выборок в те моменты, где амплитуда сигнала равна нулю. А поскольку периоды сигналов постоянны, то в таком случае все выборки будут равно нулю, несмотря на то, что дискретизуемый сигнал присутсвует
.Господа, прочитайте справочные материалы.
 
Последнее редактирование:
По теореме как раз ИМХО больше или равна, это при реализации на практике в реальном мире должна быть строго больше. А вот как объясняют справочники вот такую хренотень в Cool Edit:
1. Генерируем сумму синусов 11000 и 11050 на ч/д 44100.
2. Генерируем синус 11000 на ч/д 22050
3. Сравниваем и ох...еваем... :swoon:
 
По теореме как раз ИМХО больше или равна, это при реализации на практике в реальном мире должна быть строго больше. А вот как объясняют справочники вот такую хренотень в Cool Edit:
1. Генерируем сумму синусов 11000 и 11050 на ч/д 44100.
2. Генерируем синус 11000 на ч/д 22050
3. Сравниваем и ох...еваем... :swoon:

Во во:)... результат весьма плачевный.
 
По теореме как раз ИМХО больше или равна, это при реализации на практике в реальном мире должна быть строго больше.
По теореме строго больше.
В случае если равна, то мы получим сигнал с частотой 22050-22050=0 гц, то есть константу.
Смотри http://ru.wikipedia.org/wiki/Алиасинг_(обработка_сигналов) или книги по DSP, первые пару глав.
 

Вложения

  • alias.JPG
    alias.JPG
    46,2 KB · Просмотры: 8
megalol
Картинка не правильная... Не Fs, а 1/2Fs, F=1/2Fs и т.д.
Я вот про что - при генерации синуса при приближении к 1/2 Fs начинает громкость плавать, это за счет чего вообще? Это же ж... полная. Был бы на 10 лет моложе - сразу погрузился бы в формулы, а сейчас спать от них тянет только :lazy:
 
Это ж наверное зависит от звуковой карты. Может просто в ней фильтр антиалиасинговый (тьфу слово какое) реализован некачественно, вот его и ведет.

У фильтров высокого порядка всегда на частоте среза частотка колеблется и перед и после.
 
megalol
Картинка не правильная... Не Fs, а 1/2Fs, F=1/2Fs и т.д.
Ну да, там слово Fs пополам поделить надо. Но картинка правильная.
Я вот про что - при генерации синуса при приближении к 1/2 Fs начинает громкость плавать, это за счет чего вообще?
Ну учитывая то, что теорема говорит только о том, что сигнал восстановить МОЖНО, то, видимо, из-за кривой интерполяции во время воспроизведения. Из-за чего это — достаточно картинку нарисовать: иногда при семплировании синусоиды семплируется максимум, иногда чуть сдвигается вправо-влево от максимума, иногда сдвигается сильнее. Опытным путем выяснил, что частота биений равна (F-Fs/2).
Дешевле повысить Fs до нужных величин, чем думать об этом.
=============
Ха. Да, так и есть.
Генерируем сигнал при Fs=8000, F=3900:
(рис. 1)
Копируем сигнал в файл с Fs=44100:
(рис. 2)
Как видим, информация есть, но штуко(интерполятор?) работающий с Fs=8000 не восстановил ее правильно (ибо нефиг при такой маленькой Fs работать с такими частотами), а вот с Fs=44100 нормально. Ток амплитуда не та. И не совсем правильно, если на спектр посмотреть, но все равно без биений.
 

Вложения

  • fsfsfs.JPG
    fsfsfs.JPG
    87,7 KB · Просмотры: 7
Последнее редактирование:
Боюсь - что это слишком упрощенный взгляд на теорему. Там вроде что-то о том, что если F стремится к 1/2Fs - то неопределенность возникает или еще что... Отупел я за 10 лет, что поделать. Просто все вокруг уперлись в эту теорему и мол нахрен не нужны 192КГц - а вот на практике выходит что них...я! Еще как нужны если генерируем в редакторе чистый синус (чего там сложного-то???? - карта ни при чем тут совершенно) и этот синус стремится к 1/2Fs. Почему модуляция-то берется от генерируемой частоты F и "отраженной" Fs-F??? Почему эта частота Fs-F влияет вообще на что-либо? Я всегда думал что она "виртуальная" - а оказывается-то вполне реальная получается. Неужели так налажали с алгоритмом генерации синуса или интерполяции??? Может в теории все нормально, но на практике пока таких высот достигнуть не удалось:
F=22049.00 - период модуляции громкости 1 сек (1Гц) за один период успевает сделать 2 скачка, во время второго меняется фаза.
F=22049.90 - период модуляции громкости 10 сек (0.1Гц)
F=22049.99 - период 100 секунд!!!
На сложном сигнале может и все ок будет, а так резать все что выше 20КГц нахрен как и учили великие предки!!! А нужны частоты выше - welcome Fs=96КГц.
 
Боюсь - что это слишком упрощенный взгляд на теорему. Там вроде что-то о том, что если F стремится к 1/2Fs - то неопределенность возникает или еще что... Отупел я за 10 лет, что поделать. Просто все вокруг уперлись в эту теорему и мол нахрен не нужны 192КГц - а вот на практике выходит что них...я!
Уперлись те, кто своими руками не писал ни один vst, а практики думают. Иногда дешевле придумать крутой алгоритм, иногда дешевле увеличить в два раза частоту семплирования и фильтрануть.
192 КГц очень нужны для всего нелинейного.
Мне известны способы сделать неалиасящую классические формы или hardsync, но неалиасящий FM хотя бы из трех операторов — как? Да никак.
Clavia давно это поняли и генерируют все на больших оборотах, фильтруют и даунсемплят. Вот нелинейные фильтры уже можно на 2хFs делать, envelope'ам и линейным вещам типа реверов вообще пофиг.
Но это творится внутри плагина.
А в проекте? 96 однозначно звучит лучше, особенно для любителей ставить много дисторшенов-утеплителей. Шума алиасинга будет меньше.
Еще как нужны если генерируем в редакторе чистый синус (чего там сложного-то???? - карта ни при чем тут совершенно) и этот синус стремится к 1/2Fs. Почему модуляция-то берется от генерируемой частоты F и "отраженной" Fs-F??? Почему эта частота Fs-F влияет вообще на что-либо? Я всегда думал что она "виртуальная" - а оказывается-то вполне реальная получается.
Конечно реальная.
Неужели так налажали с алгоритмом генерации синуса или интерполяции???
Почему налажали? Ты часто генерируешь синусоиды с частотой 22049 Гц? И так есть запас 18000—22050, который человек не слышит практически. Существует компромисс: ты идеалист и делаешь мегаинтерполятор, который жрет 50% процессора, или реалист, который знает, что человеку в общем-то пофиг на 22049 Гц. Резать не надо, потому что
а) человек этого не слышит (в миксе, понятное дело)
б) фильтр высокого порядка на 18—20 кГц подосрет все значительнее.
 
Novation написал(а):
Неужели так налажали с алгоритмом генерации синуса или интерполяции???
Генерация синуса - в полном порядке. А вот интерполяция - конечно, неидеальная: и в Audition, и в ЦАП. Причем, в Audition она обычно похуже, чем в ЦАП. У реальных ЦАП "проблемы" с модуляцией в режиме 44.1 кГц начинаются выше 18-20 кГц, т.е. там, где этого уже не слышно. Так что оснований для паники нету. Наличие модуляции в цифровых отсчетах не означает, что эта модуляция будет присутствовать и в восстановленном аналоговом сигнале. Для экспериментов "с картинками" рекомендую программу iZotope RX (достаточно даже демо), там порядок интерполяции аналоговой волны можно менять в Preferences/Misc.
 
Alexey Lukin, речь не о панике:) А просто о понимании того, что происходит и причин этого:) не более;)
естественно понятно что частоты близкие к F\2 нас по сути мало интересуют, даже в случае 44100. Но знать и понимать как все просиходит, хочется. И я нутром чую, что понимать это нужно:)

Ну и дело тут не как в таковой интерполяции, а просто в том, что действительно в случае приближения частоты сигнала к Fs/2 , достоверность восстановления сигнала уменьшается, о чем говорил Novation. Собственно мы получаем модуляцию в толькочто сгенерированном синусе.
 
Karlson написал(а):
Ну и дело тут не как в таковой интерполяции, а просто в том, что действительно в случае приближения частоты сигнала к Fs/2 , достоверность восстановления сигнала уменьшается
Дело именно в интерполяции. Теорема Котельникова совершенно четко говорит, что никакой недостоверности быть не может: восстановление аналогового сигнала - точное, при условии использования идеального интерполирующего фильтра. В случае неидеального интерполирующего фильтра ошибки будут определяться АЧХ фильтра.
 
И "отражения", о которых шла речь - как раз и есть то, что не отрезал некачественный фильтр, отраженное от Fs назад в область частот от 0 до Fs/2?
 
да эти отражения спектра обрабатываемого сигнала вообще появляются вокруг самой частоты дискретизации в обе стороны...
 
хе, а вот щас возьму и подолью масла в огонь, выложив парочку скринов :declare:
Вобщем... Прога WaveLab от Steinberg-а...

Картинка 1. Спектр сигнала 900 Гц, частота дискретизации 2 кГц, 24 бит. Условие теоремы Котельникова выполняется. 900 Гц ниже предельной частоты в 1 кГц.

Картинка 2. Этому сигналу даем Convert Sample Rate до 8 кГц, то есть, 4-х кратная передискретизация, 24 бит. Видны пики на 900 Гц - сам сигнал, 1100 Гц, (2000 Гц - 900 Гц) - отраженная копия в полосе частот Fd/2...Fd. А так же, копии на 2900 Гц и 3100 Гц. Напомню, что первоначальная частота дискретизации была 2 кГц... 2900 подозрительно смахивает на 2000+900, не правда ли? Копия 900 Гц в диапазоне частот Fd...1,5*Fd :preved: И 3100 Гц тоже - 4000 Гц - 900 Гц, копия обрабатываемого сигнала 900 Гц в диапазоне частот 1,5*Fd...2*Fd.
Картинка 3. Исходный сигнал передискретизован до 16 кГц. Смотрим сами.

Вобщем, если бы позволяли возможности спектроанализатора WaveLab-а, то для первой картинки можно было бы увидеть все эти пики и без передискретизации. Тут дело в самой проге, которая не дает посмотреть спектр сигнала выше половины частоты дискретизации. Поэтому пришлось прибегнуть к такой хитрости.

В приложенном архиве - сами 5-секундные звуковые файлы для ознакомления.
 

Вложения

  • pic-1.jpg
    pic-1.jpg
    30,6 KB · Просмотры: 8
  • pic-2.jpg
    pic-2.jpg
    27,9 KB · Просмотры: 8
  • pic-3.jpg
    pic-3.jpg
    74,1 KB · Просмотры: 8
  • Exper.zip
    Exper.zip
    3,7 KB · Просмотры: 1
Последнее редактирование:
Не в том дело. Таким образом, я хотел показать, что спектр исходного сигнала повторяется через равные промежутки в Fd/2. Так сказать, наглядное подтверждение теории.

Ну а на практике все лишние пики подавляются фильтрами. Разумеется.
 
Последнее редактирование:

Сейчас просматривают