реклама на сайте
подробности

 
 
> Придумал алгоритм интерполяции. Протестируем результаты?, вызов от дилетанта
_Ivana
сообщение Apr 7 2012, 12:23
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Пару дней назад пришлось вникнуть в азы ЦОС на примере ресемплинга. Почитал пару-тройку страничек в инете, про двойной апсемплинг, оконные функции, полиномы Лагранжа-Фарроу и т.п. И придумал свой алгоритм sm.gif Без таблиц, на чистой математике. По объему операций существенно меньше Фарроу. Реализовал его, как обычно, сначала на 1С sm.gif Посмотрел графики. Потом перевел в целочисленную математику и с помощью коллеги наваял программку - ресемплер wav файлов. С заданием частоты ресемплинга и выбором варианта - своего или Фарроу.

Собственно, предлагаю: заинтересованные лица выкладывают вавки, я их ресемплю с нужной частотой двумя вариантами и выкладываю на всеобщее скачивание/заслушивание. Желающие делятся своими мнениями по поводу sm.gif

ЗЫ поскольку я совершенный дилетант в сабжевом вопросе, я вполне допускаю что этот алгоритм уже давно придуман до меня. Но навскидку я не нашел ничего похожего.

Графические примеры работы алгоритмов: точки 50, 70, 20, края диапазона добиты нулями. График - ось абсцисс вниз, ординат - вправо.
Фарроу:
CODE

      *--- 0
     *
    *
   *
   *
  *
  *
   *
   *
    *
      *--- 0
          *
              *
                   *
                        *
                             *
                                   *
                                        *
                                             *
                                                   *
                                                        *--- 50
                                                            *
                                                               *
                                                                  *
                                                                     *
                                                                        *
                                                                          *
                                                                           *
                                                                            *
                                                                            *
                                                                            *--- 70
                                                                        *
                                                                    *
                                                               *
                                                          *
                                                     *
                                                *
                                          *
                                    *
                               *
                          *--- 20
                      *
                   *
                 *
              *
            *
           *
         *
        *
      *
      *--- 0
     *
     *
    *
    *
    *
    *
     *
     *
     *

Мой алгоритм:
CODE

      *--- 0
     *
     *
    *
   *
  *
  *
  *
  *
   *
      *--- 0
         *
             *
                  *
                       *
                             *
                                   *
                                         *
                                               *
                                                   *
                                                        *--- 50
                                                           *
                                                               *
                                                                  *
                                                                     *
                                                                        *
                                                                          *
                                                                            *
                                                                            *
                                                                            *
                                                                            *--- 70
                                                                         *
                                                                      *
                                                                 *
                                                           *
                                                     *
                                               *
                                         *
                                   *
                              *
                          *--- 20
                      *
                   *
                 *
              *
            *
           *
         *
        *
       *
      *--- 0
     *
    *
    *
    *
    *
     *
     *
     *
     *

За качество обоих графиков извиняйте - они в псевдографике с грубым "разрешением", на самом деле они более красивые sm.gif

Сообщение отредактировал _Ivana - Apr 7 2012, 12:31
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Ivana
сообщение Apr 9 2012, 14:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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 точек почти полностью сливается с Катмуллом-Ромом (график ниже). Но само значение производной рассчитывается через тангенсы-арктангенсы и достаточно сложно. Это и была моя вторая идея, которую я проверил только что. А потом я придумал считать производную как тангенс наклона соседних точек - собственно то, что потом узнал как Катмулла-Рома.

ЗЫ сейчас я пытаюсь построить интерполяцию кубическим сплайном, зная точные значения производной искомой функции в точках отсчета. И сравнить её с Фарроу. Если она окажется лучше (а я на это рассчитываю), тогда мои предположения насчет неидеальности условия на сплайн Лагранжа-Фарроу верны, и может быть можно будет придумать ещё какой-нибудь вариант расчета производных по заданным отсчетам, который приводил бы к бОльшей точности чем Фарроу и был бы не очень громоздок.

Собственно, на текущий момент мысли таковы. А снизу - график ошибки Фарроу, Катмулла-Рома и метода "биссектрисы" (как я его называю sm.gif ) И обещанный ресемплинг синуса 3920Гц с исходных 8000 до 44100 sm.gif

Upd: добавлен график сравнения ошибок 4-х методов: зеленый - Катмулла-Рома, синий - Фарроу, желтый - полиномами Лагранжа 4 степени, красный - кубическими сплайнами при условии точного знания производной интерполируемой функции во точках отсчета. Получается, красный - теоретически возможный предел для сплайнов 3-го порядка с условиями по производным в точках отсчета. Но достаточно хороший предел, надо сказать, можно к нему и постремиться sm.gif Осталось только придумать красивую и точную процедуру угадывания производных. Я придумал пока две - одна оказалась Катмуллом-Ромом, другая - сложнее неё и не лучше по результатам. Может придумаю ещё sm.gif

Сообщение отредактировал _Ivana - Apr 9 2012, 18:40
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Apr 10 2012, 08:57
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(_Ivana @ Apr 9 2012, 18:43) *
В данный момент размышления следующие. Фарроу (Лагранж 3-го порядка) - это имхо по сути (хотя многие могут со мной не согласиться) тот же кубический сплайн. Локальный, определяемый для 4-х точек, но действующий только на средний интервал из 3-х. Точно так же, как и сплайны Эрмита, например. Тот факт, что Лагранж при построении проходит через все 4 точки, не дает значения интерполирующей функции в левом и правом интервалах, поскольку при интерполяции собственно самих этих боковых интервалов (когда они являются центральными) полином проходит совершенно не так, как проходит в случае если интервал является правым или левым относительно центрального. Значит нельзя считать условие прохождение полинома через крайние точки самым оптимальным с точки зрения построения сплайна. Я придумал (а Катмулл и Ром до меня) другие условия: сплайн проходит через 2 точки и имеет определенные производные в них же, так чтобы полученная функция имела непрерывную первую производную. Сначала я придумал считать значение этой производной, как тангенс угла-биссектрисы исходных двух (словами трудно объяснить, надо на графике показывать). Только что проверил этот вариант - при малых дискретизациях ошибка выше Катмулла-Рома, при увеличении начиная где-то с 12 точек почти полностью сливается с Катмуллом-Ромом (график ниже). Но само значение производной рассчитывается через тангенсы-арктангенсы и достаточно сложно. Это и была моя вторая идея, которую я проверил только что. А потом я придумал считать производную как тангенс наклона соседних точек - собственно то, что потом узнал как Катмулла-Рома.


Изобретатель вы наш. Об этом уже много лет в институтах на лекциях рассказывают. Вы попробуйте сделать то, что я вам предложил.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _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 страниц V   1 2 >


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 14:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01496 секунд с 7
ELECTRONIX ©2004-2016