|
Придумал алгоритм интерполяции. Протестируем результаты?, вызов от дилетанта |
|
|
|
Apr 7 2012, 12:23
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Пару дней назад пришлось вникнуть в азы ЦОС на примере ресемплинга. Почитал пару-тройку страничек в инете, про двойной апсемплинг, оконные функции, полиномы Лагранжа-Фарроу и т.п. И придумал свой алгоритм  Без таблиц, на чистой математике. По объему операций существенно меньше Фарроу. Реализовал его, как обычно, сначала на 1С  Посмотрел графики. Потом перевел в целочисленную математику и с помощью коллеги наваял программку - ресемплер wav файлов. С заданием частоты ресемплинга и выбором варианта - своего или Фарроу. Собственно, предлагаю: заинтересованные лица выкладывают вавки, я их ресемплю с нужной частотой двумя вариантами и выкладываю на всеобщее скачивание/заслушивание. Желающие делятся своими мнениями по поводу  ЗЫ поскольку я совершенный дилетант в сабжевом вопросе, я вполне допускаю что этот алгоритм уже давно придуман до меня. Но навскидку я не нашел ничего похожего. Графические примеры работы алгоритмов: точки 50, 70, 20, края диапазона добиты нулями. График - ось абсцисс вниз, ординат - вправо. Фарроу: CODE *--- 0 * * * * * * * * * *--- 0 * * * * * * * * * *--- 50 * * * * * * * * * *--- 70 * * * * * * * * * *--- 20 * * * * * * * * * *--- 0 * * * * * * * * *
Мой алгоритм: CODE *--- 0 * * * * * * * * * *--- 0 * * * * * * * * * *--- 50 * * * * * * * * * *--- 70 * * * * * * * * * *--- 20 * * * * * * * * * *--- 0 * * * * * * * * *
За качество обоих графиков извиняйте - они в псевдографике с грубым "разрешением", на самом деле они более красивые
Сообщение отредактировал _Ivana - Apr 7 2012, 12:31
|
|
|
|
|
 |
Ответов
|
Apr 9 2012, 14:43
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Цитата(Михаил_K @ Apr 9 2012, 17:03)  _Ivana. Интересно было бы посмотреть на спектр сигнала полученного вашим интерполятором, при интреполяции в несколько раз, при условии на вход подается синус, частота которого близка к 1/2 частоты дискретизации. Например 0.49 частоты дискретизации. Оценить уровень аллиаса, который при этом получится. Запросто. Чуть позже, как будет время. Цитата(Михаил_K @ Apr 9 2012, 17:03)  Мораль: Вы бы описали свой алгоритм, а люди бы посмотрели на него, и сказали бы свое мнение. Не исключаю, что то, что вы придумали - уже известно, и имеет определенные границы применения, либо определенные "грабли". В данный момент размышления следующие. Фарроу (Лагранж 3-го порядка) - это имхо по сути (хотя многие могут со мной не согласиться) тот же кубический сплайн. Локальный, определяемый для 4-х точек, но действующий только на средний интервал из 3-х. Точно так же, как и сплайны Эрмита, например. Тот факт, что Лагранж при построении проходит через все 4 точки, не дает значения интерполирующей функции в левом и правом интервалах, поскольку при интерполяции собственно самих этих боковых интервалов (когда они являются центральными) полином проходит совершенно не так, как проходит в случае если интервал является правым или левым относительно центрального. Значит нельзя считать условие прохождение полинома через крайние точки самым оптимальным с точки зрения построения сплайна. Я придумал (а Катмулл и Ром до меня) другие условия: сплайн проходит через 2 точки и имеет определенные производные в них же, так чтобы полученная функция имела непрерывную первую производную. Сначала я придумал считать значение этой производной, как тангенс угла-биссектрисы исходных двух (словами трудно объяснить, надо на графике показывать). Только что проверил этот вариант - при малых дискретизациях ошибка выше Катмулла-Рома, при увеличении начиная где-то с 12 точек почти полностью сливается с Катмуллом-Ромом (график ниже). Но само значение производной рассчитывается через тангенсы-арктангенсы и достаточно сложно. Это и была моя вторая идея, которую я проверил только что. А потом я придумал считать производную как тангенс наклона соседних точек - собственно то, что потом узнал как Катмулла-Рома. ЗЫ сейчас я пытаюсь построить интерполяцию кубическим сплайном, зная точные значения производной искомой функции в точках отсчета. И сравнить её с Фарроу. Если она окажется лучше (а я на это рассчитываю), тогда мои предположения насчет неидеальности условия на сплайн Лагранжа-Фарроу верны, и может быть можно будет придумать ещё какой-нибудь вариант расчета производных по заданным отсчетам, который приводил бы к бОльшей точности чем Фарроу и был бы не очень громоздок. Собственно, на текущий момент мысли таковы. А снизу - график ошибки Фарроу, Катмулла-Рома и метода "биссектрисы" (как я его называю  ) И обещанный ресемплинг синуса 3920Гц с исходных 8000 до 44100  Upd: добавлен график сравнения ошибок 4-х методов: зеленый - Катмулла-Рома, синий - Фарроу, желтый - полиномами Лагранжа 4 степени, красный - кубическими сплайнами при условии точного знания производной интерполируемой функции во точках отсчета. Получается, красный - теоретически возможный предел для сплайнов 3-го порядка с условиями по производным в точках отсчета. Но достаточно хороший предел, надо сказать, можно к нему и постремиться  Осталось только придумать красивую и точную процедуру угадывания производных. Я придумал пока две - одна оказалась Катмуллом-Ромом, другая - сложнее неё и не лучше по результатам. Может придумаю ещё
Сообщение отредактировал _Ivana - Apr 9 2012, 18:40
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 10 2012, 08:57
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(_Ivana @ Apr 9 2012, 18:43)  В данный момент размышления следующие. Фарроу (Лагранж 3-го порядка) - это имхо по сути (хотя многие могут со мной не согласиться) тот же кубический сплайн. Локальный, определяемый для 4-х точек, но действующий только на средний интервал из 3-х. Точно так же, как и сплайны Эрмита, например. Тот факт, что Лагранж при построении проходит через все 4 точки, не дает значения интерполирующей функции в левом и правом интервалах, поскольку при интерполяции собственно самих этих боковых интервалов (когда они являются центральными) полином проходит совершенно не так, как проходит в случае если интервал является правым или левым относительно центрального. Значит нельзя считать условие прохождение полинома через крайние точки самым оптимальным с точки зрения построения сплайна. Я придумал (а Катмулл и Ром до меня) другие условия: сплайн проходит через 2 точки и имеет определенные производные в них же, так чтобы полученная функция имела непрерывную первую производную. Сначала я придумал считать значение этой производной, как тангенс угла-биссектрисы исходных двух (словами трудно объяснить, надо на графике показывать). Только что проверил этот вариант - при малых дискретизациях ошибка выше Катмулла-Рома, при увеличении начиная где-то с 12 точек почти полностью сливается с Катмуллом-Ромом (график ниже). Но само значение производной рассчитывается через тангенсы-арктангенсы и достаточно сложно. Это и была моя вторая идея, которую я проверил только что. А потом я придумал считать производную как тангенс наклона соседних точек - собственно то, что потом узнал как Катмулла-Рома. Изобретатель вы наш. Об этом уже много лет в институтах на лекциях рассказывают. Вы попробуйте сделать то, что я вам предложил.
|
|
|
|
Сообщений в этой теме
_Ivana Придумал алгоритм интерполяции. Протестируем результаты? Apr 7 2012, 12:23 ViKo Не логичнее выложить сам алгоритм? Apr 7 2012, 13:11 _Ivana Я бы не хотел его обнародовать. По крайней мере, п... Apr 7 2012, 13:24 litv заслушивание на слух это - для музыкантов. Вы возь... Apr 7 2012, 13:27 _Ivana В моем слабеньком спектроанализаторе из программки... Apr 7 2012, 13:33 des00 Цитата(_Ivana @ Apr 7 2012, 08:33) В моем... Apr 7 2012, 13:41 _Ivana des00 спасибо за задание направления дальнейшего а... Apr 7 2012, 13:48 des00 Цитата(_Ivana @ Apr 7 2012, 08:48) Чувств... Apr 7 2012, 13:59 _Ivana Спасибо. Если кому есть что добавить по методам оц... Apr 7 2012, 14:07 Tanya Цитата(_Ivana @ Apr 7 2012, 18:07) Спасиб... Apr 7 2012, 17:00 thermit Цитата_Ivana:
По объему операций существенно меньш... Apr 7 2012, 15:18 _Ivana Я не знаю как прокомментировать последние реплики.... Apr 7 2012, 17:47 sup-sup Цитата(_Ivana @ Apr 7 2012, 20:47) Я не з... Apr 7 2012, 18:50 thermit 1. Оценка погрешности интерполяции заключается в о... Apr 7 2012, 19:06 _Ivana Спасибо, скачал, поставил. Сгенерировать ключ не у... Apr 7 2012, 19:41 sup-sup Цитата(_Ivana @ Apr 7 2012, 22:41) Спасиб... Apr 7 2012, 19:47 _Ivana Цитата(sup-sup @ Apr 7 2012, 23:47) ... Apr 7 2012, 19:56 sup-sup Цитата(_Ivana @ Apr 7 2012, 22:56) Наприм... Apr 7 2012, 20:25 thermit Цитата_Ivana:
Термит, если нечего сказать конструк... Apr 7 2012, 20:09 _Ivana Хорошо. Термит прав, надо отойти от цифровых приме... Apr 7 2012, 20:41 thermit Да, вопрос от меня, как от критика с претензиями в... Apr 7 2012, 20:46 _Ivana ОФФ: потому что я её хорошо знаю, и использую как ... Apr 7 2012, 20:54 Pavel_SSS Цитата(_Ivana @ Apr 8 2012, 00:54) ОФФ: п... Apr 8 2012, 00:48 thermit Цитата_Ivana:
ЗЫ я понимаю что критики с претензия... Apr 7 2012, 21:21 _Ivana За рекомендации всегда спасибо. Но от специалистов... Apr 7 2012, 21:45 ViKo Я думаю, что максимально верной интерполяцией нужн... Apr 8 2012, 06:28 Tanya Цитата(ViKo @ Apr 8 2012, 10:28) Я думаю,... Apr 8 2012, 07:26  ViKo Цитата(Tanya @ Apr 8 2012, 10:26) Вот поп... Apr 8 2012, 07:34   Tanya Цитата(ViKo @ Apr 8 2012, 11:34) А вот, с... Apr 8 2012, 09:48    ViKo Цитата(Tanya @ Apr 8 2012, 12:48) Какое э... Apr 8 2012, 13:10     GetSmart Цитата(ViKo @ Apr 8 2012, 18:10) В том-то... Apr 8 2012, 13:48     Tanya Цитата(ViKo @ Apr 8 2012, 17:10) В том-то... Apr 8 2012, 14:59      ViKo Цитата(Tanya @ Apr 8 2012, 17:59) Какая-т... Apr 8 2012, 15:28       Tanya Цитата(ViKo @ Apr 8 2012, 19:28) Эта, еди... Apr 8 2012, 15:57        ViKo Цитата(Tanya @ Apr 8 2012, 18:57) 1. Коте... Apr 8 2012, 16:39 petrov Цитата(ViKo @ Apr 8 2012, 10:28) Я думаю,... Apr 8 2012, 11:07 _Ivana Пока желающие общаются на сопутствующие темы, а я ... Apr 8 2012, 10:04 thermit Цитата_Ivana:
Пока желающие общаются на сопутствую... Apr 8 2012, 11:20 _Ivana Понятно что лучше
Число операций на отсчет оглашу... Apr 8 2012, 11:50 thermit Цитата_Ivana:
собственно, недавно кто-то говорил, ... Apr 8 2012, 12:14 _Ivana thermit, странная ситуация
Кроме Вас, в этой теме... Apr 8 2012, 12:22 GetSmart _Ivana, для начала не нужно выбирать предельную ди... Apr 8 2012, 12:39 _Ivana Картинки при 2 точках на период (предел по Котельн... Apr 8 2012, 12:42 GetSmart Цитата(_Ivana @ Apr 8 2012, 17:42) Картин... Apr 8 2012, 12:52 thermit ЦитатаРазберитесь в графиках пожалуйста. Это именн... Apr 8 2012, 12:48 _Ivana Цитата(thermit @ Apr 8 2012, 16:48) Ошибк... Apr 8 2012, 12:55 thermit ЦитатаХотите, построю этот же график но не с 2 а с... Apr 8 2012, 13:02 _Ivana Цитата(thermit @ Apr 8 2012, 17:02) C 8-м... Apr 8 2012, 13:06 thermit ЦитатаА почему бы мне не напустить тумана в этом в... Apr 8 2012, 13:20 _Ivana Термит, Вы были правы - маскирует. Мой- красный, Ф... Apr 8 2012, 13:22 thermit Цитата_Ivana:
В наш век Кали Юги на дворе не все в... Apr 8 2012, 13:32 _Ivana Шутки шутками, а вот если бы моя кривая прошла ниж... Apr 8 2012, 13:37 _Ivana Цитата(GetSmart @ Apr 8 2012, 17:48) Даже... Apr 8 2012, 13:55 des00 Цитата(_Ivana @ Apr 8 2012, 07:55) В общи... Apr 8 2012, 14:07 thermit Цитата_Ivana:
Ну например, при расчете Фарроу испо... Apr 8 2012, 14:07 _Ivana В самом первом посте я написал, что перевел свой а... Apr 8 2012, 14:11 des00 Цитата(_Ivana @ Apr 8 2012, 09:11) Но это... Apr 8 2012, 14:15 _Ivana Цитата(des00 @ Apr 8 2012, 18:15) т.е. вы... Apr 8 2012, 14:21 des00 Цитата(_Ivana @ Apr 8 2012, 08:21) Кто по... Apr 8 2012, 14:47  NiceParty Цитата(des00 @ Apr 8 2012, 18:47) да весь... Apr 8 2012, 14:56 _Ivana Цитата(des00 @ Apr 8 2012, 18:47) да весь... Apr 8 2012, 14:57 des00 Цитата(NiceParty @ Apr 8 2012, 08:56) P.S... Apr 8 2012, 15:13 NiceParty Цитата(des00 @ Apr 8 2012, 19:13) это же ... Apr 8 2012, 15:49 _Ivana Цитата(des00 @ Apr 8 2012, 19:13) а вы сл... Apr 8 2012, 15:18 thermit Цитатаdes00:
все переходит к набору сумматоров + с... Apr 8 2012, 15:28 _Ivana Подскажите кто знает, какие ещё показатели (кроме ... Apr 8 2012, 16:00 Pavel_SSS Цитата(_Ivana @ Apr 8 2012, 20:00) Подска... Apr 8 2012, 16:19 sup-sup Цитата(_Ivana @ Apr 8 2012, 19:00) Подска... Apr 8 2012, 17:53 ViKo К "единственно возможной кривой" можно п... Apr 8 2012, 18:11 _Ivana Спасибо за дельные рекомендации, померю по возможн... Apr 8 2012, 18:19 ViKo Цитата(_Ivana @ Apr 8 2012, 21:19) Послед... Apr 9 2012, 04:16 _Ivana Цитата(ViKo @ Apr 9 2012, 08:16) Это не н... Apr 9 2012, 07:54 Михаил_K _Ivana. Интересно было бы посмотреть на спектр сиг... Apr 9 2012, 13:03 thermit http://electronix.ru/forum/index.php?showt...t... Apr 9 2012, 14:01 _Ivana В продолжение эпического мыслевыражения Задача: и... Apr 9 2012, 19:18 Timmy Цитата(_Ivana @ Apr 9 2012, 23:18) гладко... Apr 9 2012, 19:55 _Ivana Спасибо, я почитал обзорно про фундаментальные, на... Apr 9 2012, 20:16 _Ivana Пока все мои попытки придумать производную точнее ... Apr 9 2012, 22:33 _Ivana С интересом разглядывая последний график, я могу с... Apr 10 2012, 07:08 rudy_b Цитата(_Ivana @ Apr 10 2012, 10:08) ...Ос... Apr 10 2012, 14:06 thermit Есть готовы формулы, по которым можно посчитать де... Apr 10 2012, 09:41 _Ivana Цитата(Михаил_K @ Apr 10 2012, 12:57) Изо... Apr 10 2012, 09:57 ViKo Цитата(_Ivana @ Apr 10 2012, 12:57) Одно ... Apr 10 2012, 10:34 Михаил_K Цитата(_Ivana @ Apr 10 2012, 13:57) и спе... Apr 10 2012, 11:36 _Ivana Цитата(ViKo @ Apr 10 2012, 14:34) Предлаг... Apr 10 2012, 12:05 Михаил_K Понятно. Просто там такой ужОс изображен, что я ср... Apr 10 2012, 12:44 NiceParty Цитата(Михаил_K @ Apr 10 2012, 16:44) Пон... Apr 10 2012, 13:59 _Ivana Цитата(ViKo @ Apr 10 2012, 14:34) Предлаг... Apr 10 2012, 15:57 ViKo А линейную интерполяцию можете забомбить, для срав... Apr 10 2012, 17:07 _Ivana По порядку - спектр исходного сигнала, после линей... Apr 10 2012, 17:12 ViKo Где какой? А красный и синий что за спектры? Apr 10 2012, 17:27 ViKo P.S. А линейный масштаб по частоте приятнее будет ... Apr 10 2012, 17:27 _Ivana Лагранж-4 из последних 3-х картинок самый зашумлен... Apr 10 2012, 17:29 ViKo Ну, и как это понимать? Что линейная интерполяция ... Apr 10 2012, 17:32 _Ivana Подозреваю что на вашем примере - да. При ресемпли... Apr 10 2012, 17:47 ViKo Цитата(_Ivana @ Apr 10 2012, 20:47) Подоз... Apr 10 2012, 17:53 _Ivana Количество точек FFT = 16384. А на другие вопросы ... Apr 10 2012, 18:01 ViKo Цитата(_Ivana @ Apr 10 2012, 21:01) Колич... Apr 10 2012, 18:10
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|