Pull to refresh

Comments 26

Вау! Я впечатлен! Спасибо!
Иногда нужны такие функции — попробую задействовать при случае.
Я нашёл ещё одну функцию с заданным количеством производных, в виде отношения двух полиномов:


Она особо интересна тем, что обратная к ней функция находится простой заменой n на 1/n, то есть



Первые 8 частных случаев будут выглядеть как
Тоже думал о бесконечно дифференцируемой функции, но не смог её самостоятельно вывести.

Кстати, ту формулу по ссылку можно упростить, если привести аргумент и значения функции к диапазону от -1 до 1 — и тогда получается Tanh[2x / (1-x2)]. Возможно, вместо гиперболического тангенса подойдут и другие сигмоиды, если должным образом масштабировать аргумент.
Варианты типа Erf[(3*x)/(1-2*x4+x6)] или Tanh[Tan[x*Pi/2]] тоже подходят. Но возникла сложность: мне (точнее Вольфраму) не удалось их проинтегрировать, чтобы использовать в кусочной функции с линейным участком.

Какой смысл в функции ограничения сигнала если она искажает его? Хотя бы для малых x должно выполняться f(x) ≈ x. Для чего требуется чтобы было f'(0) = 1. А у вас вместо этого SinClip'(0) = π/2, SoftSinClip'(0) = 2, ParabolClip'(0) = 2, SoftParabolClip'(0) = 15/8.


А вот соблюдаемые вами ограничения f(1) = 1 и f(-1) = -1, напротив, не требуются: кого интересует поведение сигнала вблизи границ, когда было решено ограничить и сгладить его?

Какой смысл в функции ограничения сигнала если она искажает его?
В начале статьи об этом говорится прямым текстом: когда искажение требуется исходя из поставленной задачи — например при реализации эффекта "overdrive". Хаб «Звук» включен в статью не случайно.

А вот соблюдаемые вами ограничения f(1) = 1 и f(-1) = -1, напротив, не требуются
Они требуются исходя из постановки задачи — ограничение и соблюдение непрерывности.

кого интересует поведение сигнала вблизи границ, когда было решено ограничить и сгладить его?
Кого не интересует, тот решает свои задачи как-то по другому.

Хорошо, рассмотрим звук и эффект "overdrive". Зачем он меняет уровень громкости звука?


Они требуются исходя из постановки задачи — ограничение и соблюдение непрерывности.

Непрерывность этого не требует. А ограничение и монотонность требуют f(+∞) = 1 и f(-∞) = -1. Так откуда взялись требования на f(1) и f(-1)?

Хорошо, рассмотрим звук и эффект «overdrive». Зачем он меняет уровень громкости звука?
Громкость звука обычно меняют, чтобы тихие звуки сделать громче (или наоборот). «Оverdrive» делает это с той же целью — чтобы сделать громкость струны на протяжении её звучания более равномерным. Но это — скорее побочный эффект, поскольку основная задача овердрайва — придать звуку гитары характерное звучание, что обеспечивается насыщением сигнала верхними гармониками, полученными вследствие ограничения. Это легко увидеть, если сделать преобразование Фурье от ограниченной по амплитуде синусоиды.

Непрерывность этого не требует.
Не буду спорить — похоже, мы изучали разную математику, ну или это я чего-то не понимаю. В моём понимании непрерывность — это отсутствие точек разрыва.

Зачем делать Оverdrive с побочным эффектом если можно сделать его без побочного эффекта?


В моём понимании непрерывность — это отсутствие точек разрыва.

В моем понимании это слово означает то же самое. Но все-таки, откуда появилось требование f(1) = 1?

Зачем делать Оverdrive с побочным эффектом если можно сделать его без побочного эффекта?
Побочный эффект потому и называется «побочным», что является следствием чего-то другого. Но в данном случае этот эффект — положительный. Устройство, в котором этот эффект является целеобразующим — называется «компрессор», и вот уже в нём искажение сигнала является негативным побочным эффектом, который невозможно исключить.

Но все-таки, откуда появилось требование f(1) = 1?
Если вы считаете это требование избыточным — продемонстрируйте свой вариант решения на формулах и графиках.

Какой же он положительный когда меняется громкость тихих звуков?


Если вы считаете это требование избыточным — продемонстрируйте свой вариант решения на формулах и графиках.

Вот мое решение:


SoftSinClipNorm(x) = SoftSinClip(x/2) = 
    x/2 + sin (πx/2) / π, -2 < x < 2
    -1, x < -2
    1, x > 2

График рисуйте как-нибудь сами.

Вот мое решение

Это та же функция, только в другом масштабе. Масштабирование вид функции не меняет. О том, что рассмотренные в статье функции нормированы к единице и их масштаб можно менять в зависимости от конкретной задачи — сказано в заключении. О нормировании производных упоминается в двух последних главах.
В заключении вы меняете диапазон выходных значений. И, к слову, тоже делаете это неправильно: для функции Clip диапазоны рабочих входных и выходных значений должны соответствовать друг другу, там нужно две операции Rescale вместо одной.

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

вы составили неправильно работающую функцию. Которая не только обрезает сигнал, но и зачем-то меняет его громкость.
Это взаимосвязанные параметры. Невозможно обрезать сигнал без изменения его громкости, даже если нормируете ограничиваю функцию по производной в точке ноль.

Если вы увеличиваете яркость картинки в 2 раза, то максимальная яркость пикселя после этого — 510 — не помещается в диапазон 0..255, и её нужно как-то в этот диапазон уместить, что без ограничения никак не получится. Если же наоборот ограничивать картинку по уровню, скажем, 127 — это также неизбежно повлечёт за собой снижение яркости.

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

Не должны, симметричность масштаба лишь один из возможных сценариев. Я уже неоднократно говорил, что ограничение сигнала — лишь один из вариантов применения таких функций, наиболее понятный, и служит лишь в качестве затравки для статьи. Сам я их использую для других целей, описанных в заключении (и для их подробного описания нужны отдельные статьи), и там масштабирование не симметричное.
Хотя бы для малых x должно выполняться f(x) ≈ x.
Вы, похоже, пропустили целую главу, в которой этот вопрос подробно рассматривается.
В которой, кстати, присутствует анимация, наглядно демонстрирующая, как длина линейного участка влияет на координаты точек стыковки.
Сжатие динамического диапазона в реальном мире (физике), это немного больше, чем рассмотренный здесь клиппиг и софт-клиппинг.
Компрессоры (АРУ) работают, все таки, не моментальными значениями.
Компрессоры (АРУ) работают, все таки, не моментальными значениями.
Само собой. Компрессор работает с усреднённым значением амплитуды. А вот чтобы он на тихом сигнале не пытался увеличить громкость в 100000 раз — и нужно ограничение.
Хрень полная, описывающая полное непонимание математики процесса. Хотите красиво показать обрезанный синус? Просто прогоняете его через фильтр ФНЧ второго порядка с полосой среза данной частоты, при этом его амплитуда будет меньше исходной (причем при ЛЮБЫХ преобразованиях, описанных в статье). Если сигнал несинусоидальный, т.е содержащий несколько гармоник с локальными изменениями амплитуды и фазы, то вся информация, содержащаяся в обрезанной части — пропадает, плюс к этому появляются гармонические искажения. Например, что делать, если на этот синус наложен второй, но с частотой в 10 раз больше?
Попробуйте сначала читать, прежде чем комментировать. Хотя бы название статьи.
Любое обрезание сигнала ведет к необратимой потере информации. Вы эту потерянную информацию пытаетесь заполнить своей интерпретацией. Получается ложь.
Хрень полная, описывающая полное непонимание математики процесса.
Статья описывает вывод формул с использованием конкретного инструмента, а вовсе не процессы.

Хотите красиво показать обрезанный синус?
Показать красиво показать обрезанный синус задача не ставилась.

Просто прогоняете его через фильтр ФНЧ второго порядка с полосой среза данной частоты
Задача фильтровать сигнал от высоких частот также не ставилась.

Если сигнал несинусоидальный, т.е содержащий несколько гармоник с локальными изменениями амплитуды и фазы, то вся информация, содержащаяся в обрезанной части — пропадает, плюс к этому появляются гармонические искажения. Например, что делать, если на этот синус наложен второй, но с частотой в 10 раз больше?
Смысл эффекта «overdrive» именно в этом. Что получается — вы можете послушать звучание перегруженной гитары в рок-композициях. Что получается в случае двух синусоид с разными частотами — легко посчитать через преобразование Фурье.
Only those users with full accounts are able to leave comments. Log in, please.