Перейти к содержанию
    

Придумал алгоритм интерполяции. Протестируем результаты?

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

 

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

 

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

 

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

Фарроу:

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

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

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

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

Изменено пользователем _Ivana

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы не хотел его обнародовать. По крайней мере, пока не увижу его описание где-либо :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

заслушивание на слух это - для музыкантов. Вы возьмите спектр от Вашего примера( до и после ресемплирования) и от Фароу например .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

ОФФ - увидел "Воронеж" подписи и решил себе тоже написать :)

Изменено пользователем _Ivana

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В моем слабеньком спектроанализаторе из программки GoldWave я на глаз не могу увидеть существенных отличий.

ИМХО на глаз и на слух это субъективная оценка, надо сравнить системы (для интерполяторов лагранжа, в том числе по структуре Фарроу, накладываются определенные ограничения применения), построить частотные характеристики интерполятора при разных задержках, оценить ошибки интерполяции и т.д. Без алгоритма, по звуковому файлу это сделать крайне затруднительно.

 

Да и фарроу в звуковой аппаратуре лучше заменить банком фир фильтров (если вычислительный ресурс позволяет).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

des00 спасибо за задание направления дальнейшего анализа. Чувствую, придется самому разбираться с перечисленными вами методами анализа :) Я наивно полагал что вавка может дать информацию. Хотя если кого заинтересует - предложение о тестовом сравнительном ресемплинге в силе.

 

И конечно Фарроу не самый лучший вариант. Я его беру только как сравнительный пример: мой алгоритм в принципе другой, но содержит меньше операций чем Фарроу. Если он окажется лучше последнего по результатам, мне будет приятно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чувствую, придется самому разбираться с перечисленными вами методами анализа :)

найдите в сети документ " Maximally Flat FD FIR Filter: Lagrange Interpolation" (первая строка гугла ;)) по нему сможете понять какими характеристиками описывается интерполятор лагранжа.

 

 

Если он окажется лучше последнего по результатам, мне будет приятно :)

а частных случаях можно придумать много разных алгоритмов интерполяции, лагранж он как бы более общий. Кстати когда будете тестировать свой интерполятор, "покачайте" частотой на которую делаете ресамплинг. Ну и спектр при этом посмотрите ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Если кому есть что добавить по методам оценки алгоритмов, буду только рад. Я разберусь с методами оценки и анализа интерполяторов, протестирую свой алгоритм и не буду скрывать результаты :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

_Ivana:

По объему операций существенно меньше Фарроу.

 

 

1. Фарроу - структура интерполятора лагранжа с минимальным числом умножителей.

 

2. Интерполяция - большой раздел вычислительной математики. Интерполяция лагранжа - самый простой (со всех

точек зрения) способ полиномиальной интерполяции. Придумать что-либо проще нее - это вряд-ли.

Изменено пользователем thermit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Если кому есть что добавить по методам оценки алгоритмов, буду только рад. Я разберусь с методами оценки и анализа интерполяторов, протестирую свой алгоритм и не буду скрывать результаты :)

Вот думаю-думаю, а понять не могу. Если есть N точек, то через них можно "провести" единственную кривую, описываемую полиномом N-1 порядка. В чем Ваша альтернативность?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не знаю как прокомментировать последние реплики. Во-первых, я нигде не утверждал что моя интерполяция полиномиальна. Хотя и обратного я тоже не утверждал :) И таки да, по объему вычислений она проще Фарроу.

К тому же, в первом посте я привел графики. Пусть и грубые, но там видно, что моя интерполяция не совпадает с Фарроу и не является ей, а значит и Лагранжем 3-го порядка как минимум. Если интересует проверка на других исходных данных - выложите ваши точки, покажу новые графики.

 

Лучше подскажите нормальный спектроанализатор вавок (из файла на не со входа звуковухи), и чтобы весил не как СаундФордж. А если ещё и будет выдавать численные коэффициенты - вообще было бы хорошо. Сразу выложу вам цифры и спектры ресемплинга простых и не очень простых сигналов. Мой GoldWave не видит разницы при ресемплинге на +500Гц (в оцифровку 44600) как на синусе 500Гц (оцифровка 44100) так и на сумме синусов с биением частоты в 1%.

Изменено пользователем _Ivana

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не знаю как прокомментировать последние реплики. Во-первых, я нигде не утверждал что моя интерполяция полиномиальна. Хотя и обратного я тоже не утверждал :) И таки да, по объему вычислений она проще Фарроу.

К тому же, в первом посте я привел графики. Пусть и грубые, но там видно, что моя интерполяция не совпадает с Фарроу и не является ей, а значит и Лагранжем 3-го порядка как минимум. Если интересует проверка на других исходных данных - выложите ваши точки, покажу новые графики.

 

Лучше подскажите нормальный спектроанализатор вавок (из файла на не со входа звуковухи), и чтобы весил не как СаундФордж. А если ещё и будет выдавать численные коэффициенты - вообще было бы хорошо. Сразу выложу вам цифры и спектры ресемплинга простых и не очень простых сигналов. Мой GoldWave не видит разницы при ресемплинге на +500Гц (в оцифровку 44600) как на синусе 500Гц (оцифровка 44100) так и на сумме синусов с биением частоты в 1%.

SpectraPlus.

Действительно, спектр рассудит.

Можно найти в 'радиосканнере'

Изменено пользователем sup-sup

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

2. По вашим рисункам лично я вообще не сказал бы, что это результат какой-либо интерполяции.

 

3. Гениеф дофига. Нормальных инженеров не хватает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, скачал, поставил. Сгенерировать ключ не удалось, использую 30-дневную версию. Действительно много возможностей. Навскидку, что увидел:

Исходный синус 500Гц (44100) THD = 0.00063, IMD = 0.1798

ресемплится в 44600.

Мой алгоритм: THD = 0.00124, IMD = 0.2349

Фарроу: THD = 0.00109, IMD = 0.2349

Если ничего не напутал :)

 

Биения 500Гц + 1%

Исходный сигнал THD = 0.00054, IMD = 0.6593

Мой алгоритм: THD = 0.00180, IMD = 0.6442

Фарроу: THD = 0.00125, IMD = 0.6443

 

Термит, если нечего сказать конструктивно (кроме очевидной методики проверки отклонения от целевого сигнала). то можно просто не писать в этот топик?

 

2 картинки спектра ресемплинга биений 500Гц+1% (ресемплинг на 500Гц). Первая - мой алгоритм, вторая - Фарроу:

 

Принимаются пожелания какие ещё тестовые сигналы ресемплить и посмотреть, спектр, какие может показательные коэффициенты (сигнал/шум там или что ещё из имеющегося в СпектраПлюсе) :)

post-66710-1333826867_thumb.jpg

post-66710-1333826878_thumb.jpg

Изменено пользователем _Ivana

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...