Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.21.43.85] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Всем салюта!
Такой вопрос, парни и красавицы. Нужно построить логарифмическую шкалу. Если я правильно понимаю, она строится по принципу: Y = Ymin + Log( (Ymin+X*(Ymax-Ymin))/Ymin ) / Log(Ymax/Ymin) где X - нормализованная позиция на шкале (от 0 до 1); Ymin, Ymax - диапазон значений; Y - искомое значение на позиции X. Всё бы хорошо, но есть нюанс. При Ymin <= 0 эта функция не имеет решения. Как обычно такая задача решается? Скажем, нужна шкала от 0 до 1000. Или от -10 до +10 (чтобы она сжималась в обе стороны по мере удаления от 0, надо полагать(?)). |
Сообщ.
#2
,
|
|
|
Jin X, не нужно искать сложностей там, где их нет! На сколько я понял, у тебя есть две "сущности":
1) Логарифмическая зависимость 2) Нужная тебе шкальная система отсчета Вот возьми и наложи ее на твою систему отсчета. Логарифмическую зависимость ты вправе: 1) Двигать относительно координат 0,0 2) Масштабировать по нужному тебе коэффициенту (константе или функции) У тебя весь "инструментарий" есть, или я что-то не понимаю |
Сообщ.
#3
,
|
|
|
JoeUser, не совсем понимаю тебя.
Давай конкретно. Есть область значений [A; B], нужно найти значение на лог. шкале в относительной позиции X (0..1). К примеру, частота от 0 до 22050 Гц. Каково значение частоты будет в середине шкалы (X = 0.5)? Как это посчитать? |
Сообщ.
#4
,
|
|
|
Цитата Jin X @ Если ты выбрал логарифмическую шкалу, будь добр, обеспечь чтобы весь диапазон значений был строго положительным.К примеру, частота от 0 до 22050 Гц. У тебя здесь явно слышимый человеком диапазон звуков. Зачем тебе частоты ниже 15 Гц? Цитата Jin X @ Предположим, ты ограничил частоту снизу значением 22050/2048=10.7666015625.Каково значение частоты будет в середине шкалы (X = 0.5)? Тогда в середине шкалы у тебя будет значение sqrt(10.7666015625*22050) = 487.2407664113554 |
Сообщ.
#5
,
|
|
|
Не понимаю проблемы... считаешь логарифм (раз ордината остаётся линейной - только для абсциссы), после чего обычным образом нормализуешь линейную шкалу. Для разметки реперных точек и расчёта значений (в т.ч. для расчёта абсциссы в середине шкалы) делаешь обратное преобразование (экспонента).
Цитата Jin X @ Всё бы хорошо, но есть нюанс. При Ymin <= 0 эта функция не имеет решения. Ну так какая может быть логарифмическая шкала для отрицательных абсцисс? |
Сообщ.
#6
,
|
|
|
Цитата amk @ Ну я видел такие шкалы, которые начинаются с 0.Если ты выбрал логарифмическую шкалу, будь добр, обеспечь чтобы весь диапазон значений был строго положительным. Значит, там за 0 просто берут какое-то малое значение (типа 0.1)? Цитата amk @ Откуда такое значение? Предположим, ты ограничил частоту снизу значением 22050/2048=10.7666015625. Цитата Akina @ Давай по-русски. Формулами и с конкретным примером считаешь логарифм (раз ордината остаётся линейной - только для абсциссы), после чего обычным образом нормализуешь линейную шкалу. Для разметки реперных точек и расчёта значений (в т.ч. для расчёта абсциссы в середине шкалы) делаешь обратное преобразование (экспонента). Вот у меня конкретный вопрос: Цитата Jin X @ К примеру, частота от 0 до 22050 Гц. Каково значение частоты будет в середине шкалы (X = 0.5)? Как это посчитать? Добавлено Цитата Akina @ Зеркально, ИМХО. Главное разобраться, что делать с нулём Ну так какая может быть логарифмическая шкала для отрицательных абсцисс? |
Сообщ.
#7
,
|
|
|
Jin X, походу твой вопрос - не вопрос. Используй формулу:
у = k + log(x+m) Где с помощью коэффициентов ты сможешь график двигать относительно 0:0 как тебе заблагорассудится. Остается вопрос "среднего" которое ты реально хочешь. Для функции у = x вполне хватит у/2 при max x. В случае логарифмической функции, х3, возможно следует брать интегралы. Так, чтобы интеграл от [0,n] == [n,max]. Но я не полностью вкуриваю что именно тебе нужно от логарифма. |
Сообщ.
#8
,
|
|
|
То, что называют логарифмической шкалой, применяется только к величинам, которые не могут быть и отрицательными, и положительными. Например - шкала громкости в децибелах. И эта шкала не может включать ноль, так как ноль находится на -∞ по шкале.
|
Сообщ.
#9
,
|
|
|
Цитата Jin X @ К примеру, частота от 0 до 22050 Гц. А нулевая частота возможна? Ее в принципе нет, есть значения, рядом с нулем, но мы же таким на графике не будем заморачиваться. Т.е. имеем формальную шкалу с нулем, но X не может в принципе принимать нулевые значения. Ну и добавить проверку на ноль, чтоб возвращало результат "инфинити" |
Сообщ.
#10
,
|
|
|
Цитата Black_Dragon @ Да, она называется "постоянный ток", а гармоника на нулевой частоте - "постоянная составляющая". А нулевая частота возможна? |
Сообщ.
#11
,
|
|
|
Цитата Dushevny @ гармоника на нулевой частоте - "постоянная составляющая". А фаза? |
Сообщ.
#12
,
|
|
|
Цитата Mikle @ А фазы нет. А фаза? |
Сообщ.
#13
,
|
|
|
Цитата JoeUser @ Что такое k, что такое m, что такое x3, что такое n, что такое max? у = k + log(x+m) В каких единицах это, в каких единицах x? Я не понимаю вообще ничего из того, что ты написал... Цитата Mikle @ Я понимаю. Но вот, к примеру, скрин из Sound Forge.То, что называют логарифмической шкалой, применяется только к величинам, которые не могут быть и отрицательными, и положительными. Например - шкала громкости в децибелах. И эта шкала не может включать ноль, так как ноль находится на -∞ по шкале. Прикреплённая картинка
Получается, что они вместо 0 взяли, скажем, 0.5, правильно? От балды по сути. Я думал, может есть какая-то стандартная практика на эти случаи... |
Сообщ.
#14
,
|
|
|
Цитата Jin X @ вот, к примеру, скрин из Sound Forge Так тут шкала не логарифмическая, не соответствует запросу из п.1: Цитата Jin X @ Нужно построить логарифмическую шкалу. |
Сообщ.
#15
,
|
|
|
Присоединяюсь, это - не логарифмическая шкала.
|