Таким образом, если вы генерируете прямоугольную волну, просто переключая сигнал между двумя значениями на границах семплов, он генерирует бесконечный ряд гармоник, которые создают псевдоним и воспроизводят тоны ниже вашего основного уровня, что очень хорошо слышно. Решением является Band-Limited Synthesis , либо с использованием аддитивного синтеза, либо с помощью шагов с ограничением по полосе, чтобы получить сигналы, которые такие же, как если бы вы имели ограничение по диапазону идеальной математической прямоугольной волны перед ее дискретизацией:
Но я только что понял, что если вы примените большое усиление к цифровой синусоиде, а затем обрежете ее цифровым способом, то получится такая же прямоугольная форма волны, без ряби феномена Гиббса. Таким образом, он также производит алиасные искажающие продукты, верно? Таким образом, любое нелинейное искажение в цифровой области, которое производит гармоники вне пределов Найквиста, приведет к появлению искаженных продуктов искажения? (Изменить: я провел несколько тестов и подтвердил, что эта часть верна.)
Существует ли такая вещь, как искажение, ограниченное полосами, для имитации (в цифровой области) эффектов искажения (в аналоговой области) перед ограничением полосы и дискретизацией? Если так, то как ты это делаешь? Если я ищу «искажение с ограниченной полосой», я нахожу некоторые ссылки на полиномы Чебышева, но я не знаю, как их использовать или они работают только для синусоидальных волн или что:
Этот инструмент не пытается генерировать искажения, ограниченные полосами. Те, кто заинтересован в искажении, ограниченном полосами, должны исследовать использование полиномов Чебышева для получения эффекта. Гиперболическое касательное искажение
«Чебышевский многочлен» - формирующие функции с важным свойством, заключающимся в том, что они по существу ограничены полосами, т.е. они не вводят паразитные спектральные гармоники из-за перекрытия и т. Д. Wave Shaper
источник
Ответы:
Применение нелинейной функции всегда вводит гармоники, а смешивание нелинейных функций с выборочными версиями непрерывных сигналов добавляет складку, которую вы заметили выше (где высокочастотные гармоники совмещены с низкими частотами).
Я могу придумать несколько способов продолжить:
Вы можете объединить (1) и (2). Третий подход сложен, но дает вам лучший контроль над тем, сколько искажений следует допустить, и, вероятно, будет лучше масштабироваться до очень высоких требований к точности.
(Немного подумав, вы могли бы также использовать эту форму непосредственно для аппроксимации отфильтрованной нелинейности. Это потребовало бы хорошего представления ряда для ограничителя.)
источник
Несколько подходов к нелинейным искажениям без псевдонимов (в порядке возрастания сложности):
Ограничивающий алгебраический дизайн . В предыдущем пункте вы видели, что сглаживание нелинейных искажений приводит к нелинейным фильтрам. Конечно, не все нелинейные фильтры свободны от псевдонимов, но некоторые могут быть. Таким образом, очевидный вопрос заключается в том, чтобы критерий сделал такой фильтр строго свободным от псевдонимов и как его проектировать. Как оказалось, эквивалентным утверждением о том, что нет псевдонимов, является то, что нелинейный фильтр коммутирует с подвыборочными трансляциями. Таким образом, вы должны убедиться, что это не имеет значения, если вы переводите сначала, а затем фильтруете, или фильтруете сначала, а затем переводите. Это условие приводит к очень строгим проектным ограничениямдля нелинейных фильтров, но зависит от того, как вы понимаете трансляцию сигнала. Например, для идеального перевода потребовалось бы бесконечно много коэффициентов для нелинейного фильтра. Таким образом, вы должны приблизить преобразование сигнала к конечному порядку, чтобы получить конечный нелинейный фильтр. Степень свободы псевдонимов зависит от используемого вами приближения, но вы очень хорошо управляете им. После проработки математики этого подхода вы можете сконструировать любую (не просто гладкую) нелинейную передаточную функцию как почти идеальную цифровую модель в виде нелинейного фильтра. Я не могу набросать детали здесь, но, возможно, вы можете найти вдохновение в этом описании.
источник
Сами полиномы могут быть легко сгенерированы с помощью следующего рекуррентного отношения :
Вот первые несколько:
Вычисляя чебышевскую серию
источник
@ robert-bristow-johnson очень четко объясняет это на comp.dsp :
Другими словами, если ваша нелинейность является полиномом, самая высокая частота, которая может быть получена в результате искажения, будет самой высокой частотой в вашем сигнале, умноженной на порядок N полинома. (Полиномиальная нелинейность умножает сигнал сам по себе в N раз, поэтому его спектр свертывается с самим собой и расширяется в том же соотношении.)
Итак, вы знаете максимальную частоту (будь то Найквист или какой-то нижний предел для вашего приложения), и вы знаете порядок полинома, так что вы можете сделать выборку, достаточную для предотвращения алиасинга, выполнения искажения, а затем фильтра нижних частот и выборки.
Фактически, вы можете уменьшить частоту передискретизации, позволив некоторому псевдониму произойти, если он содержится в полосе, которая будет удалена перед понижающей дискретизацией:
источник