Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Придумал алгоритм интерполяции. Протестируем результаты?
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3, 4
_Ivana
Пару дней назад пришлось вникнуть в азы ЦОС на примере ресемплинга. Почитал пару-тройку страничек в инете, про двойной апсемплинг, оконные функции, полиномы Лагранжа-Фарроу и т.п. И придумал свой алгоритм 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
ViKo
Не логичнее выложить сам алгоритм?
_Ivana
Я бы не хотел его обнародовать. По крайней мере, пока не увижу его описание где-либо sm.gif
litv
заслушивание на слух это - для музыкантов. Вы возьмите спектр от Вашего примера( до и после ресемплирования) и от Фароу например .
_Ivana
В моем слабеньком спектроанализаторе из программки GoldWave я на глаз не могу увидеть существенных отличий. К тому же, я предполагаю, что существуют и другие методы количественных оценок качества ресемплинга. Но поскольку я (повторюсь) дилетант в вопросе, я и решил самонадеянно выйти на суд знающей общественности sm.gif Которая может подсунет сумму синусов некратных частот в вавке, проанализирует результаты ресемплинга разными суровыми методами и скажет - ээээ, батенька, не тянет ваш алгоритм sm.gif Или наоборот.

ОФФ - увидел "Воронеж" подписи и решил себе тоже написать sm.gif
des00
Цитата(_Ivana @ Apr 7 2012, 08:33) *
В моем слабеньком спектроанализаторе из программки GoldWave я на глаз не могу увидеть существенных отличий.

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

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

И конечно Фарроу не самый лучший вариант. Я его беру только как сравнительный пример: мой алгоритм в принципе другой, но содержит меньше операций чем Фарроу. Если он окажется лучше последнего по результатам, мне будет приятно sm.gif
des00
Цитата(_Ivana @ Apr 7 2012, 08:48) *
Чувствую, придется самому разбираться с перечисленными вами методами анализа sm.gif

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


Цитата(_Ivana @ Apr 7 2012, 08:48) *
Если он окажется лучше последнего по результатам, мне будет приятно sm.gif

а частных случаях можно придумать много разных алгоритмов интерполяции, лагранж он как бы более общий. Кстати когда будете тестировать свой интерполятор, "покачайте" частотой на которую делаете ресамплинг. Ну и спектр при этом посмотрите wink.gif
_Ivana
Спасибо. Если кому есть что добавить по методам оценки алгоритмов, буду только рад. Я разберусь с методами оценки и анализа интерполяторов, протестирую свой алгоритм и не буду скрывать результаты sm.gif
thermit
Цитата
_Ivana:
По объему операций существенно меньше Фарроу.



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

2. Интерполяция - большой раздел вычислительной математики. Интерполяция лагранжа - самый простой (со всех
точек зрения) способ полиномиальной интерполяции. Придумать что-либо проще нее - это вряд-ли.
Tanya
Цитата(_Ivana @ Apr 7 2012, 18:07) *
Спасибо. Если кому есть что добавить по методам оценки алгоритмов, буду только рад. Я разберусь с методами оценки и анализа интерполяторов, протестирую свой алгоритм и не буду скрывать результаты sm.gif

Вот думаю-думаю, а понять не могу. Если есть N точек, то через них можно "провести" единственную кривую, описываемую полиномом N-1 порядка. В чем Ваша альтернативность?
_Ivana
Я не знаю как прокомментировать последние реплики. Во-первых, я нигде не утверждал что моя интерполяция полиномиальна. Хотя и обратного я тоже не утверждал sm.gif И таки да, по объему вычислений она проще Фарроу.
К тому же, в первом посте я привел графики. Пусть и грубые, но там видно, что моя интерполяция не совпадает с Фарроу и не является ей, а значит и Лагранжем 3-го порядка как минимум. Если интересует проверка на других исходных данных - выложите ваши точки, покажу новые графики.

Лучше подскажите нормальный спектроанализатор вавок (из файла на не со входа звуковухи), и чтобы весил не как СаундФордж. А если ещё и будет выдавать численные коэффициенты - вообще было бы хорошо. Сразу выложу вам цифры и спектры ресемплинга простых и не очень простых сигналов. Мой GoldWave не видит разницы при ресемплинге на +500Гц (в оцифровку 44600) как на синусе 500Гц (оцифровка 44100) так и на сумме синусов с биением частоты в 1%.
sup-sup
Цитата(_Ivana @ Apr 7 2012, 20:47) *
Я не знаю как прокомментировать последние реплики. Во-первых, я нигде не утверждал что моя интерполяция полиномиальна. Хотя и обратного я тоже не утверждал sm.gif И таки да, по объему вычислений она проще Фарроу.
К тому же, в первом посте я привел графики. Пусть и грубые, но там видно, что моя интерполяция не совпадает с Фарроу и не является ей, а значит и Лагранжем 3-го порядка как минимум. Если интересует проверка на других исходных данных - выложите ваши точки, покажу новые графики.

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

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

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

3. Гениеф дофига. Нормальных инженеров не хватает.
_Ivana
Спасибо, скачал, поставил. Сгенерировать ключ не удалось, использую 30-дневную версию. Действительно много возможностей. Навскидку, что увидел:
Исходный синус 500Гц (44100) THD = 0.00063, IMD = 0.1798
ресемплится в 44600.
Мой алгоритм: THD = 0.00124, IMD = 0.2349
Фарроу: THD = 0.00109, IMD = 0.2349
Если ничего не напутал sm.gif

Биения 500Гц + 1%
Исходный сигнал THD = 0.00054, IMD = 0.6593
Мой алгоритм: THD = 0.00180, IMD = 0.6442
Фарроу: THD = 0.00125, IMD = 0.6443

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

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

Принимаются пожелания какие ещё тестовые сигналы ресемплить и посмотреть, спектр, какие может показательные коэффициенты (сигнал/шум там или что ещё из имеющегося в СпектраПлюсе) sm.gif
sup-sup
Цитата(_Ivana @ Apr 7 2012, 22:41) *
Спасибо, скачал, поставил. Сгенерировать ключ не удалось, использую 30-дневную версию. Действительно много возможностей. Навскидку, что увидел:
Исходный синус 500Гц (44100) THD = 0.00063, IMD = 0.1798
ресемплится в 44600.
Мой алгоритм: THD = 0.00124, IMD = 0.2349
Фарроу: THD = 0.00109, IMD = 0.2349
Если ничего не напутал sm.gif

Биения 500Гц + 1%
Исходный сигнал THD = 0.00054, IMD = 0.6593
Мой алгоритм: THD = 0.00180, IMD = 0.6442
Фарроу: THD = 0.00125, IMD = 0.6443

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

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

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

Еще можно по спектрограмме оценить для сложного сигнала на разные артефакты. В SpectraPlus спектрограммы так себе. Самые лучшие, что я видел, делает SA (в том же 'радиосканнере' есть. Демо-версии достаточно.
А ресемплить сигналы со сложным спектром, меняющимся во времени. Еще, близким к частоте Найквиста. Если алгоритм позволяет это.
_Ivana
Цитата(sup-sup @ Apr 7 2012, 23:47) *
А ресемплить сигналы со сложным спектром, меняющимся во времени. Еще, близким к частоте Найквиста. Если алгоритм позволяет это.

Например какие? ГолдВэвйв много разных может генерить, СпектраПлюс поменьше вариантов, но тоже есть кое-что. Есть синус умноженный на экспоненту и много чего ещё диковинного, плюс самому можно формулы написать sm.gif

Частотная модуляция . 500+-Гц. Ресемплинг тот же - с 44100 до 44600.
Мой THD = 0.00091, IMD = 0.6729, слева
Фарроу THD = 0.00112, IMD = 0.6729, справа
thermit
Цитата
_Ivana:
Термит, если нечего сказать конструктивно (кроме очевидной методики проверки отклонения от целевого сигнала). то можно просто не писать в этот топик?


С начала этого топика кроме меня только 1 (один) человек ответил вам конструктивно. Пальцем тыкать не хочу.
Это что касается конструктивизма в частности.

Что касается конструктивизма вообще:
1 Да. Я хочу увидеть не непонятные картинки, а пиковую ошибку интерполяции гармонического сигнала в зависимости от частоты при частоте дискретизации = 1. Все остальное не несет никакой полезной информации.

2 Хотелось бы понять принципиальную новизну вашего метода. Ведь полиномиальная интерполяция - самая простая. Все другие способы (дробно-рациональная, тригонометрическая и т д) существенно сложнее.

в этой связи

3 Обнародуйте свой алгоритм. едва-ли этим вы уроните кого-либо под стол.
sup-sup
Цитата(_Ivana @ Apr 7 2012, 22:56) *
Например какие? ГолдВэвйв много разных может генерить, СпектраПлюс поменьше вариантов, но тоже есть кое-что. Есть синус умноженный на экспоненту и много чего ещё диковинного, плюс самому можно формулы написать sm.gif

Частотная модуляция . 500+-Гц. Ресемплинг тот же - с 44100 до 44600.
Мой THD = 0.00091, IMD = 0.6729, слева
Фарроу THD = 0.00112, IMD = 0.6729, справа

Я предложил (по методике тестирования) для визуальной оценки смотреть спектрограммы в хорошем разрешении. Поиграться при этом размером FFT для нахождения лучшего разрешения по частоте и по времени. Это даст не усредненный замазанный результат, а более пиковый, как сказал thermit. Из сигналов можно взять ЛЧМ (chirp) от нулевой частоты до fs/2. Еще, сумму нескольких синусов в верху диапазона с разными фазами. И вообще, искать именно тот сигнал, который плохо интерполируется. В этом случае вопросов и не будет. Ищите неисправности в алгоритме и, если не находите, все хорошо. И смотреть в динамике, то есть спектрограммой. Это для качественной оценки одним взглядом. Более интересные места смотреть подробнее во временной и в частотной области.
_Ivana
Хорошо. Термит прав, надо отойти от цифровых применений и просто чисто математически проинтерполировать синус с разной частотой, при этом посчитать максимальный модуль отклонения от чистого синуса на интервале и средний модуль отклонения на нем же. Я и сам думал так сделать. Жаль в 1С нет функции синуса, придется как-то выкручиваться. Но я сделаю это, для нескольких частот точно. И сравню с Фарроу. И выложу сюда. Как найду где взять точный чистый синус любого аргумента, простите за банальные трудности sm.gif

ЗЫ а насчет гениев и инженеров у меня своя версия - мало и тех и других. Критикофф с претензиями зато дофига sm.gif
thermit
Да, вопрос от меня, как от критика с претензиями вам как к гению : При чем тут 1с?
_Ivana
ОФФ: потому что я её хорошо знаю, и использую как тестовый инструмент для отладки разной математики. Она отлично выводит и таблицы и графики и псевдографики и я могу удобно просматривать любые промежуточные результаты в любом виде и формате. И всем рекомендую sm.gif
Например, для первого поста потребовалась псевдографика с хитрыми непечатными символами а-ля пробел, ибо пробелы с краев отрезаются. В 1С я это сделал за минуту.

ЗЫ я понимаю что критики с претензиями предпочитают наверное матлаб или маткад, и я с ними согласен, но его надо ещё найти, поставить и освоить.
thermit
Цитата
_Ivana:
ЗЫ я понимаю что критики с претензиями предпочитают наверное матлаб или маткад, и я с ними согласен, но его надо ещё найти, поставить и освоить.



Угу. Предпочитают. Дык для гениев еще ексель есть... Там даже синус имеецца. Не говоря уж про тангенсы всякие...

Для гениев чуть меньшего размера осмелюсь порекомендовать это изделие www.jsoftware.com (v6.x).
_Ivana
За рекомендации всегда спасибо. Но от специалистов они всегда ценнее и эффективнее. Я уже нашел интегрируемый в 1С вариант:
CODE
// синус
function sin(value,sc=0)
try
if sc=0 then
sc=createObject("MSScriptControl.ScriptControl");
endif;
sc.language="VBscript";
except
return getEmptyValue();
endtry;
return sc.eval("sin("+value+")");
endFunction

Вроде работает, график на глаз гладкий. Буду пробовать с этой функцией.
Pavel_SSS
Цитата(_Ivana @ Apr 8 2012, 00:54) *
ОФФ: потому что я её хорошо знаю, и использую как тестовый инструмент для отладки разной математики. Она отлично выводит и таблицы и графики и псевдографики и я могу удобно просматривать любые промежуточные результаты в любом виде и формате. И всем рекомендую sm.gif
Например, для первого поста потребовалась псевдографика с хитрыми непечатными символами а-ля пробел, ибо пробелы с краев отрезаются. В 1С я это сделал за минуту.

ЗЫ я понимаю что критики с претензиями предпочитают наверное матлаб или маткад, и я с ними согласен, но его надо ещё найти, поставить и освоить.

Интересно, попробовать вести бухгалтерию в Матлабе... Что-то в этом есть...
Насчет интерполяции - как тут уже отмечали, интерполяция - это нахождение непрерывной функции, желательно выраженной с помощью простых действий - умножения, деления, сложения вычитания, может быть еще извлечения корня, проходящей через заданные точки. Имея такую функцию, мы можем найти ее значения, а, следовательно, значения входного сигнала в промежуточных точках. Насколько значение функции будет соответствовать входному сигналу? Неизвестно. Теоретически возможно, что входной сигнал между отсчетами улетает до небес. Поэтому мы должны сделать предположение, что сигнал - физическая величина, следовательно обладает конечной энергией и конечным - и весьма нешироким, спектром. Иначе неуместно говорить об интерполяции сигнала, а надо говорить об математической абстракции - провести кривую через столько-то точек. Удобным методом интерполяции является полиномиальная интерполяция - нахождение полинома степени N-1, выражающего функцию, проходящую через N точек. Лагранж предложил метод нахождения таких полиномов, а Фарроу - способ построения интерполятора оптимально использующего вычислительные мощности. Но по сути - это полиномиальная интерполяция, дающая одинаковый результат независимо от способа вычисления полинома, так как такой полином существует один. Такая интерполяция хорошо подходит, в частности, к музыке, так как музыкальный сигнал - это некий набор гармонических составляющих - синусоид, параметры которых меняются относительно медленно. Эти синусоиды можно разложить в ряд Тейлора, сложить разложения, и получим, как раз, многочлен, причем невысокой степени.
Есть случаи, когда полиномиальная интерполяция малопригодна - например, при попытке интерполировать изображение, оно может потерять четкость переходов...
ViKo
Я думаю, что максимально верной интерполяцией нужно считать интерполяцию синусную, когда для каждой существующей выборки создают функцию sin(x)/x, с вершиной в этой выборке (а для остальных выборок эта функция будет в нуле), и затем складывают все эти функции. Дальше по полученной кривой вычисляют значения в любых других точках. Но это слишком сложный алгоритм.

Между выборками сигнал не должен меняться, как угодно, иначе частота дискретизации не будет удовлетворять теореме Котельникова.
Tanya
Цитата(ViKo @ Apr 8 2012, 10:28) *
Я думаю, что максимально верной интерполяцией нужно считать

любую.
Даже аппроксимацию при бесконечном числе точек нельзя выбрать. Пока не выбран критерий близости функций.
Вот попробуйте - (0, 0), (1, 1), (100, 0), (101, -1). Можете продлить...
И.... главное - докажите, что Ваша интерполяция "максимально верная".
ViKo
Цитата(Tanya @ Apr 8 2012, 10:26) *
Вот попробуйте - (0, 0), (1, 1), (100, 0), (101, -1). Можете продлить...
И.... главное - докажите, что Ваша интерполяция "максимально верная".

Имею в виду равномерную дискретизацию. Доказательство элементарное. Идеальный ФНЧ имеет именно такую импульсную характеристику.

А вот, собственно, доказательство. Первая же формула.
http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%...%86%D0%B8%D1%8F
Tanya
Цитата(ViKo @ Apr 8 2012, 11:34) *
А вот, собственно, доказательство. Первая же формула.

Какое это доказательство? И чего? Ведь мы имеем некоторую функцию, заданную отсчетами в некоторых точках.
Потом мы придумываем непрерывную функцию, которая проходит через эти точки. Вариантов придумки бесконечно много. И ни один не лучше другого.
А почему Вы ограничиваете себя функцией заданной в точках, лежащих на равных расстояниях?
_Ivana
Пока желающие общаются на сопутствующие темы, а я пытаюсь получить графики отклонений, для затравки 2 картинки сравнения методов. Красный - синус, желтый - отсчеты, зеленый - мой, синий - Фарроу:
petrov
Цитата(ViKo @ Apr 8 2012, 10:28) *
Я думаю, что максимально верной интерполяцией нужно считать интерполяцию синусную, когда для каждой существующей выборки создают функцию sin(x)/x, с вершиной в этой выборке (а для остальных выборок эта функция будет в нуле), и затем складывают все эти функции. Дальше по полученной кривой вычисляют значения в любых других точках. Но это слишком сложный алгоритм.


Он вообще не реализуемый, а вот обрезанный синк является ли самым лучшим ФНЧ из возможных?
thermit
Цитата
_Ivana:
Пока желающие общаются на сопутствующие темы, а я пытаюсь получить графики отклонений, для затравки 2 картинки сравнения методов. Красный - синус, желтый - отсчеты, зеленый - мой, синий - Фарроу:


Ну, это уже лучше. Теперь огласите число операций на выходной отсчет вашего интерполятора.
_Ivana
Понятно что лучше sm.gif
Число операций на отсчет оглашу чуть позже. Картинки с графиками максимального и среднего отклонений тоже уже получил - вышло немного забавно sm.gif Сейчас формирую полные графики отклонений с учетом любой возможной фазы интерполируемого синуса на любой частоте (сдвиг по фазе от 0 до 2пи внутри любой частоты). Графики опять же чуть позже.
А пока ТИПИЧНЫЕ (НЕ СЛУЧАЙНЫЕ) картинки сравнения интерполяций (мой зеленый, Фарроу синий):
Видна некая тенденция. Которая, кстати говоря, и позволяет мне предполагать, что по некоторым критериям мой алгоритм может оказаться явно лучше sm.gif

Собственно, искомые графики sm.gif Красный - мой, зеленый - Фароу
По оси абсцисс - отношение частоты дискретизации к частоте исходного синуса. Ссылаясь на Котельникова, я эту величину не брал меньше 2 sm.gif Начинается с 2 и возрастает до.... можете на графике посмотреть.
Первый график - максимальный модуль отклонения (в абсолютных единицах, при синусе от -1 до +1). Второй - средний модуль отклонения.

ЗЫ собственно, недавно кто-то говорил, что "Интерполяция - большой раздел вычислительной математики" (С). Вот видимо эта умная математика и привела в итоге к таким результатам сравнения алгоритмов sm.gif
thermit
Цитата
_Ivana:
собственно, недавно кто-то говорил, что "Интерполяция - большой раздел вычислительной математики" (С). Вот видимо эта умная математика и привела в итоге к таким результатам сравнения алгоритмов



Пока что вы продолжаете плодить малоинформативные картинки. В тех условиях, что вы задали (4 точки на период) любой алгоритм интерполяции будет работать плохо. Что и видно на ваших картинках.
Задайте хотя бы 6 т/период, а лучше 8. А еще лучше выполнить измерение максимальной погрешности интерполяции для ряда частот 1/64 1/32 1/16 1/8 и выложить тут график.
_Ivana
thermit, странная ситуация sm.gif
Кроме Вас, в этой теме похоже никого это не интересует и никто не хочет хоть какие-то графики от меня получить. Получается, что только Вы (при всем Вашем неоправданном снисходительно-пренебрежительном отношении) и пытаетесь разобраться. Так разбирайтесь, читайте внимательнее.
ПОСЛЕДНИЕ ГРАФИКИ - это И ЕСТЬ максимальная и средняя погрешности ОТ ОТНОШЕНИЯ ЧАСТОТЫ ДИСКРЕТИЗАЦИИ К САМОЙ ЧАСТОТЕ СИНУСА - Вашими словами, количества точек на период синуса!

Разберитесь в графиках пожалуйста. Это именно то, что Вы просили (насколько я понял). Масштаб оси абсцисс правда обратно-логарифмический, но мне так удобнее, да и нагляднее так.
GetSmart
_Ivana, для начала не нужно выбирать предельную дискретизацию. Мне видится на графиках 2 точки на период, то бишь почти по пределу Котельникова. Фарроу на такой частоте реально плохо работает. Синк, кстати, неплохо, обрезанный естественно.

Хотите чем-то возгордиться, покажите графики с 3-мя или 4-мя точками на период синуса.
_Ivana
Картинки при 2 точках на период (предел по Котельникову) я показал ТОЛЬКО с целью наглядной демонстрации различия алгоритмов. И сам график отклонений логично строить от значения 2 - предела по Котельникову,я уже об этом писал.
Вот картинки при повышении частоты дискретизации, по 2 - с разным фазовым сдвигом. Они не такие наглядные, поэтому я их и не показывал. При дальнейшем повышении частоты дискретизации будет еще ненагляднее sm.gif
thermit
Цитата
Разберитесь в графиках пожалуйста. Это именно то, что Вы просили (насколько я понял). Масштаб оси абсцисс правда обратно-логарифмический, но мне так удобнее, да и нагляднее так.



Ошибка при 2-4 точках на период маскирует ошибки для меньших частот. Поэтому ваши картинки по-прежнему малоинформативны.

Пора огласить число операций.
GetSmart
Цитата(_Ivana @ Apr 8 2012, 17:42) *
Картинки при 2 точках на период (предел по Котельникову) я показал ТОЛЬКО с целью наглядной демонстрации различия алгоритмов. И сам график отклонений логично строить от значения 2 - предела по Котельникову,я уже об этом писал.

НЕ ЛОГИЧНО, поверьте. Это крайний случай, который информативно ущербен. Иногда, очень редко, он может иметь значение. Обычно разумный проектировщик системы к нему (пределу) не приближается.

Поэтому демонстрируйте свой алгоритм во всей красе в широком диапазоне дискретизаций. Цифры в ранних постах пока никакой заметной относительно фэрроу точности не показали. По поводу кол-ва вычислений до сих пор загадка.
_Ivana
Цитата(thermit @ Apr 8 2012, 16:48) *
Ошибка при 2-4 точках на период маскирует ошибки для меньших частот. Поэтому ваши картинки по-прежнему малоинформативны.
Пора огласить число операций.

Хотите, построю этот же график но не с 2 а с 5 или 6 точек на период? Это будет тот же график, только отрезанный и отмасштибированный. Со скольки точек построить?

А число операций - штука тонкая, как я надеюсь, Вы понимаете. Где-то есть аппаратное умножение, где-то нет. И с делением тоже. Но в любом случае меньше Фарроу - это точно sm.gif
thermit
Цитата
Хотите, построю этот же график но не с 2 а с 5 или 6 точек на период? Это будет тот же график, только отрезанный и отмасштибированный. Со скольки точек построить?


C 8-ми точек на период. Естественно, растянутый по оси y.

Цитата
А число операций - штука тонкая, как я надеюсь, Вы понимаете. Где-то есть аппаратное умножение, где-то нет. И с делением тоже. Но в любом случае меньше Фарроу - это точно


Не надо туман напускать. Умножение, сложение, деление, извлечение корня - операции.
Сколько и каких именно подобных операций на 1 выходной отсчет требует ваш интерполятор?
_Ivana
Цитата(thermit @ Apr 8 2012, 17:02) *
C 8-ми точек на период. Естественно, растянутый по оси y.

Наконец-то разумные пожелания. Сейчас построю, прикреплю.

Цитата(thermit @ Apr 8 2012, 17:02) *
Не надо туман напускать. Умножение, сложение, деление, извлечение корня - операции.
Сколько подобных операций на 1 выходной отсчет требует ваш интерполятор?

А почему бы мне не напустить тумана в этом вопросе? Я ведь пока не хочу обнародовать алгоритм sm.gif Но повторяю в 100500-й раз - гарантированно меньше Фарроу при любых аппаратных возможностях sm.gif При усеченных возможностях - ощутимо меньше sm.gif
ViKo
Цитата(Tanya @ Apr 8 2012, 12:48) *
Какое это доказательство? И чего? Ведь мы имеем некоторую функцию, заданную отсчетами в некоторых точках.
Потом мы придумываем непрерывную функцию, которая проходит через эти точки. Вариантов придумки бесконечно много. И ни один не лучше другого.

В том-то и дело, что, если функция оцифрована в соответствии с теоремой Котельникова, это будет единственная функция, проходящая через все наши точки.
thermit
Цитата
А почему бы мне не напустить тумана в этом вопросе? Я ведь пока не хочу обнародовать алгоритм sm.gif Но повторяю в 100500-й раз - гарантированно меньше Фарроу при любых аппаратных возможностях sm.gif При усеченных возможностях - ощутимо меньше


У нас есть такие приборы... Но мы вам про них не расскажем (цэ)
Зачем было тогда сюда писать?
_Ivana
Термит, Вы были правы - маскирует. Мой- красный, Фарроу - зеленый. И по моему (если я нигде ничего не напутал), это действительные показатели алгоритмов, а не накопленная ошибка округления или что-то ещё. Ну чтож - результат таков каков он есть sm.gif Хотя я оставляю ещё шанс что я ошибся при построении графиков, но он честно говоря невелик sm.gif
Спасибо вам за помощь в анализе (несмотря на остальные моменты) sm.gif

Цитата(thermit @ Apr 8 2012, 17:20) *
У нас есть такие приборы... Но мы вам про них не расскажем (цэ)
Зачем было тогда сюда писать?

А вы не обижайтесь. В наш век Кали Юги на дворе не все всем все рассказывают sm.gif
К тому же, в самом заголовке темы я предложил протестировать РЕЗУЛЬТАТЫ, а не говорил что буду обнародовать алгоритм sm.gif
thermit
Цитата
_Ivana:
В наш век Кали Юги на дворе не все всем все рассказывают


Гы. Я буду первым, кто скомуниздит ваш супералгоритм и сказочно обогатится...
_Ivana
Шутки шутками, а вот если бы моя кривая прошла ниже Фарроу, тогда уже был бы совсем другой разговор sm.gif

Хотя, надо наверное ещё покрутить - поанализировать отклонения. Статистическими методами, например. Вдруг да окажется, что для какого-то класса задач и сигналов мой алгоритм будет иметь преимущество? sm.gif Хотя имхо и так неплохие результаты, особенно учитывая разность в количестве операций sm.gif

Средняя ошибка. Тоже уступаю Фарроу....
GetSmart
Цитата(ViKo @ Apr 8 2012, 18:10) *
В том-то и дело, что, если функция оцифрована в соответствии с теоремой Котельникова, это будет единственная функция, проходящая через все наши точки.

Вот же ж идеалисты. Учебники прямо так и учат. Никаких нуансов.
Физику процесса надо бы понимать чтоб так категорично заявлять.
Если даже БПФ "затрудняется" точно посчитать амплитуду дробной частоты по _исходным сэмплам_.
То уж дубовый интерполятор и подавно не сможет (идеально точно и однозначно).
Не стоит забывать, что всегда кол-во сэмплов ограничено на практике.


Цитата(_Ivana)
...особенно учитывая разность в количестве операций

Даже в общих чертах не проясните во сколько/насколько быстрее?
_Ivana
Цитата(GetSmart @ Apr 8 2012, 17:48) *
Даже в общих чертах не проясните во сколько/насколько быстрее?

В общих чертах... Ну например, при расчете Фарроу используется деление на 6 (хорошо, уговорили - на 3 sm.gif ). Даже если есть аппаратное деление, то мой алгоритм быстрее ..... а вот не знаю насколько - но будет как раз протестировать! sm.gif А уж если нет аппаратного деления - тогда за счет необходимости его эмуляции на асме получается ещё бОльшая разница. Кстати сказать, даже если бы Фарроу и не требовал этого пресловутого деления на 6, то мой алгоритм все равно бы был быстрее sm.gif
Но больше не выпытывайте пожалуйста sm.gif Если получится - протестирую на железе и скажу реальную разницу в скорости.
des00
Цитата(_Ivana @ Apr 8 2012, 07:55) *
В общих чертах... Ну например, при расчете Фарроу используется деление на 6 (хорошо, уговорили - на 3 sm.gif )

может открою вам глаза, но у меня сплошь и рядом в модемах на ПЛИС используется интерполяторы лагранжа, по структуре Фарроу. Так вот там нет ни одного делителя wink.gif совсем. И все прекрасно работает wink.gif так что математика у вас не той системы wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.