Есть ли такая вещь, как ограниченное полосой нелинейное искажение?


12

Таким образом, если вы генерируете прямоугольную волну, просто переключая сигнал между двумя значениями на границах семплов, он генерирует бесконечный ряд гармоник, которые создают псевдоним и воспроизводят тоны ниже вашего основного уровня, что очень хорошо слышно. Решением является Band-Limited Synthesis , либо с использованием аддитивного синтеза, либо с помощью шагов с ограничением по полосе, чтобы получить сигналы, которые такие же, как если бы вы имели ограничение по диапазону идеальной математической прямоугольной волны перед ее дискретизацией:

http://flic.kr/p/83JMjT

введите описание изображения здесь

Но я только что понял, что если вы примените большое усиление к цифровой синусоиде, а затем обрежете ее цифровым способом, то получится такая же прямоугольная форма волны, без ряби феномена Гиббса. Таким образом, он также производит алиасные искажающие продукты, верно? Таким образом, любое нелинейное искажение в цифровой области, которое производит гармоники вне пределов Найквиста, приведет к появлению искаженных продуктов искажения? (Изменить: я провел несколько тестов и подтвердил, что эта часть верна.)

Существует ли такая вещь, как искажение, ограниченное полосами, для имитации (в цифровой области) эффектов искажения (в аналоговой области) перед ограничением полосы и дискретизацией? Если так, то как ты это делаешь? Если я ищу «искажение с ограниченной полосой», я нахожу некоторые ссылки на полиномы Чебышева, но я не знаю, как их использовать или они работают только для синусоидальных волн или что:

Этот инструмент не пытается генерировать искажения, ограниченные полосами. Те, кто заинтересован в искажении, ограниченном полосами, должны исследовать использование полиномов Чебышева для получения эффекта. Гиперболическое касательное искажение

 

«Чебышевский многочлен» - формирующие функции с важным свойством, заключающимся в том, что они по существу ограничены полосами, т.е. они не вводят паразитные спектральные гармоники из-за перекрытия и т. Д. Wave Shaper


Я не уверен, что вы спрашиваете. Если вы выполняете операцию, которая вызывает генерацию частотного контента за пределами региона Найквиста, в котором вы работаете, то вы увидите псевдонимы независимо от того, как вы сгенерировали указанный контент. Какие аналоговые искажения вы пытаетесь симулировать? Один из подходов может состоять в том, чтобы сначала повысить частоту дискретизации до достаточно высокой частоты дискретизации, а затем использовать более широкую область Найквиста для выполнения обработки сигнала. После этого вы можете вернуться к первоначальной ставке.
Джейсон Р

@JasonR: Да, для генерации прямоугольных волн вы можете использовать метод с действительно ограниченными полосами, такой как аддитивный синтез, или вы можете приблизиться, сначала увеличивая частоту, наивно создавая прямоугольную волну, а затем понижая (но все равно будет некоторые псевдонимы, только на более низком уровне). Аналогично, вы можете аппроксимировать искажение, как вы сказали, сначала повышая дискретизацию, но есть ли способ генерировать его напрямую, с наложением нуля, аналогично методу аддитивного синтеза для генерации прямоугольных волн?
эндолит

@JasonR: Я вообще спрашиваю о любых нелинейных искажениях, но что-то вроде эмуляции схемы искажения аналогового гитарного усилителя было бы хорошим примером. Если я правильно понимаю, если делать это наивно в цифровой области, это приведет к появлению продуктов искажения, которые не существуют при искажении в аналоговой области, некоторые из которых могут быть отчетливо слышны на частотах ниже, чем основные и т. Д.
эндолит

2
@endolith Чебышевские полиномы могут быть тем, что вы хотите.
Datageist

@datageist: Можете ли вы написать ответ о том, как использовать полиномы Чебышева? Даже короткий.
эндолит

Ответы:


5

Применение нелинейной функции всегда вводит гармоники, а смешивание нелинейных функций с выборочными версиями непрерывных сигналов добавляет складку, которую вы заметили выше (где высокочастотные гармоники совмещены с низкими частотами).

Я могу придумать несколько способов продолжить:

  1. Вы можете использовать коэффициент передискретизации, достаточно высокий для захвата дополнительных гармоник (с некоторой произвольной точностью, например, вашего минимального уровня шума),
  2. Вы можете использовать «более мягкую» функцию отсечения (см., Например, здесь ), у которой есть гармоники, которые вымирают раньше, чем жесткие ограничители. Это легче моделировать, но вносит свои собственные искажения на низких частотах.
  3. Основываясь на предложенном выше подходе, интерполируйте ваш дискретизированный сигнал (например, используя интерполятор Лагранжа или Чебышева) для построения модели с непрерывным временем. Затем примените жесткую стрижку и низкие частоты в моделируемой области непрерывного времени. Пример результата.

Вы можете объединить (1) и (2). Третий подход сложен, но дает вам лучший контроль над тем, сколько искажений следует допустить, и, вероятно, будет лучше масштабироваться до очень высоких требований к точности.

f(x)

f(x)=n=0[f(n)(0)n!xn]

f(x)x=g(t)g(t)xng(t)nnnnраз это ваш сигнал. Чтобы завершить картину, вам нужно вычислить амплитуду, связанную с каждым термином, и решить, сколько терминов в суммировании являются релевантными.

(Немного подумав, вы могли бы также использовать эту форму непосредственно для аппроксимации отфильтрованной нелинейности. Это потребовало бы хорошего представления ряда для ограничителя.)


Чтобы уточнить, # 3 - это не просто передискретизация с интерполяцией, это поиск параметров непрерывного полинома Чебышева, который соответствует выбранным точкам, а затем работа с этими параметрами и модель полинома?
эндолит

1
Я представляю последовательность полиномиальных интерполяторов, каждый из которых активен на небольшом диапазоне выборок. Таким образом, по мере поступления новой выборки вы создадите интерполятор, который активен только в определенный интервал. Ваше приближение непрерывного времени к дискретизированному сигналу состоит из этих полиномов. (Я думаю, что Лагранж, но Чебышев, вероятно, то же самое. Я не помню, если чебышевские интерполяторы точно соответствуют точкам выборки. Если нет, вы получите разрывы при переключении между интерполяторами.)
Грэм

4

Несколько подходов к нелинейным искажениям без псевдонимов (в порядке возрастания сложности):

  1. fs2NffN+1

  2. N2N

  3. f:RRf:RNRMNM>N

  4. Ограничивающий алгебраический дизайн . В предыдущем пункте вы видели, что сглаживание нелинейных искажений приводит к нелинейным фильтрам. Конечно, не все нелинейные фильтры свободны от псевдонимов, но некоторые могут быть. Таким образом, очевидный вопрос заключается в том, чтобы критерий сделал такой фильтр строго свободным от псевдонимов и как его проектировать. Как оказалось, эквивалентным утверждением о том, что нет псевдонимов, является то, что нелинейный фильтр коммутирует с подвыборочными трансляциями. Таким образом, вы должны убедиться, что это не имеет значения, если вы переводите сначала, а затем фильтруете, или фильтруете сначала, а затем переводите. Это условие приводит к очень строгим проектным ограничениямдля нелинейных фильтров, но зависит от того, как вы понимаете трансляцию сигнала. Например, для идеального перевода потребовалось бы бесконечно много коэффициентов для нелинейного фильтра. Таким образом, вы должны приблизить преобразование сигнала к конечному порядку, чтобы получить конечный нелинейный фильтр. Степень свободы псевдонимов зависит от используемого вами приближения, но вы очень хорошо управляете им. После проработки математики этого подхода вы можете сконструировать любую (не просто гладкую) нелинейную передаточную функцию как почти идеальную цифровую модель в виде нелинейного фильтра. Я не могу набросать детали здесь, но, возможно, вы можете найти вдохновение в этом описании.


y[t]=x[t]k

Или другой (возможно связанный) вопрос - если вы используете упомянутый локальный конечный подход, вы получите карту от усеченных степенных рядов до усеченных степенных рядов. Затем, когда вы попытаетесь выполнить низкочастотную передачу усеченных степенных рядов, которые обычно бы сворачивались с помощью функции sinc, вы получаете какое-нибудь простое выражение для результата? Может ли результат быть снова выражен в виде усеченного степенного ряда, и если да, то как он выглядит?
Майк Батталья

1
@MikeBattaglia, может быть, вы можете создать новый вопрос, чтобы я мог дать исчерпывающий ответ там. Чтобы ответить на ваш второй вопрос, вы используете не ядро ​​SINC, а в простейшем случае ядро ​​boxcar. Ядра высших порядков работают, но чтобы получить аналитический результат, вы должны ограничиться определенными ядрами.
Jazzmaniac

Спасибо - создал новый вопрос здесь для вопроса о дизайне фильтра: dsp.stackexchange.com/q/51533/18276
Майк Батталья

2

Tn(x)=cos(narccos(x)).

Tn(x)

(1)Tn(cos(kx))=cos(narccos(cos(kx)))=cos(nkx).

Сами полиномы могут быть легко сгенерированы с помощью следующего рекуррентного отношения :

T0(x)=1T1(x)=xTn(x)=2xTn1(x)Tn2(x).

Вот первые несколько:

T0(x)=1T1(x)=xT2(x)=2x(x1)=2x21T3(x)=2x(2x21)x=4x33xT4(x)=2x(4x33x)(2x21)=8x48x2+1

(1)T2cos(x)

2cos2(x)1=2(eix+eix2)21=24(ei2x+2eixeix+ei2x)1=(ei2x+ei2x2)+221=cos(2x).

Вычисляя чебышевскую серию

f(x)=n=0anTn(x)

nf(x)


Благодарность! Что происходит с сигналами, отличными от одной синусоиды? Ограниченная интермодуляция или нет?
эндолит

1
xn

1

@ robert-bristow-johnson очень четко объясняет это на comp.dsp :

Вы должны ограничить выборку до конечной степени. если вы представляете (без памяти, я полагаю) нелинейность как многочлен конечного порядка (который аппроксимирует любую кривую, которую вы пытаетесь реализовать), то независимо от того, какой порядок многочленов, является одним и тем же фактором избыточной выборки, и псевдонимы не возникнут. затем фильтр нижних частот (с такой частотой передискретизации), чтобы избавиться от всех частотных компонентов выше, чем у вашего оригинального Найквиста, затем сглаживание, и у вас не будет псевдонимов.

Другими словами, если ваша нелинейность является полиномом, самая высокая частота, которая может быть получена в результате искажения, будет самой высокой частотой в вашем сигнале, умноженной на порядок N полинома. (Полиномиальная нелинейность умножает сигнал сам по себе в N раз, поэтому его спектр свертывается с самим собой и расширяется в том же соотношении.)

Итак, вы знаете максимальную частоту (будь то Найквист или какой-то нижний предел для вашего приложения), и вы знаете порядок полинома, так что вы можете сделать выборку, достаточную для предотвращения алиасинга, выполнения искажения, а затем фильтра нижних частот и выборки.

Фактически, вы можете уменьшить частоту передискретизации, позволив некоторому псевдониму произойти, если он содержится в полосе, которая будет удалена перед понижающей дискретизацией:

Еще одна маленькая хитрость заключается в том, что вам не нужно заботиться о наложении алиасов, которые сворачиваются в область, из которой вы будете выделять ФНЧ. таким образом, полином 5-го порядка должен иметь только коэффициент передискретизации 3. эти верхние 2 гармоники могут иметь псевдоним, но не возвращаться в основную полосу. при понижении частоты вы фильтруете эти псевдонимы. так что я думаю, что жесткое и быстрое правило

коэффициент передискретизации = (полиномиальный порядок + 1) / 2


2
NN+12fs

@robert Я видел и добавил эту часть, когда вы комментировали. Если вы переписываете это как свой собственный ответ, я удалю его и приму ваш
эндолит

1
о, Боже. чтобы одеться, хороший ответ требует работы.
Роберт Бристоу-Джонсон

@ robertbristow-johnson Ну, воображаемые точки интернета - ваши, если вы хотите их
эндолит
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.