Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Придумал алгоритм интерполяции. Протестируем результаты?
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3, 4
_Ivana
Сейчас посмотрю синусоиды на глаз, и попробую ещё кое-что. Блин, мой косяк!!! Маза-фаза.... Предыдушим полиномиальным спектрам не верить! буду искать ошибку... sm.gif
NiceParty
Цитата(ViKo @ Apr 10 2012, 22:10) *
...Похоже, интерполяция полиномами не даст качественного звука...

Ну, во-первых, как мне кажется, топикстартер где-то накосячил со спектрами. Когда я строил подобные картинки, то у меня они были посимпатичней.

А во-вторых, смотря для чего эту интерполяцию использовать.
Для апсемплинга от 48кГц к 192кГц она не подходит. Поэтому используют стандартные sinc-и, но они требуют существенно большего объема вычислений.
Если же использовать интерполяцию для ресемплинга аудио, например от 44100 к 48000, то результат получается вполне сносным.
Я отслушивал результаты подобного ресемплинга. Для ряда применений этого может оказаться вполне достаточным.

Попросите топикстартера сделать спектрограммы ресемплинга 8кГц синуса из 44100 (чтобы соблюсти пропорцию частоты сигнала и дискретизации) в 48000 по разным вариантам полиномиальной интерполяции. Думаю, это будет интересным.

P.S. Пока писал, топикстартер уже нашел у себя ошибку sm.gif
_Ivana
Вроде теперь на глаз все без выбросов (при попытке увеличить точность в интеджерах вылетал за их пределы).
Новые графики: Катмулл-Ром, Фарроу и линейка. Надеюсь, это будет больше похоже на правду sm.gif
ViKo
А теперь сделайте, чтобы этих палок не было! sm.gif
"вы знаете какое-нибудь другое мирное русло, в которое я мог бы направить свой избыток энергии, и которое было бы не менее интересно и увлекательно?" По-моему - очень достойное занятие.
_Ivana
Цитата(ViKo @ Apr 10 2012, 23:29) *
А теперь сделайте, чтобы этих палок не было! sm.gif

Каких палок? sm.gif Выбросов на синусоиде? Сделал уже. И спектры привел уже по интерполяции без выбросов. У меня алгоритм в целых числах считает, и до последнего времени я использовал 15бит точности задания времени, все было хорошо, но мне пожадничалось и захотелось 16, я добавил разрядов, а ваш пример как раз показал что надо оставить 15бит sm.gif Спасибо Вам за такой тест на ошибку sm.gif Теперь все красиво.
А насчет отсутствия палок в спектре, боюсь тут я бессилен sm.gif Судя по картинкам синусоиды, интерполируется она настолько хорошо, насколько может по данным алгоритмам.
ViKo
Цитата(_Ivana @ Apr 10 2012, 22:35) *
Каких палок? sm.gif Выбросов на синусоиде?

Нет, лишних палок в спектре. Должна остаться только одна 1kHz.

А что синус такой кривой? Непорядок.
_Ivana
Ну насчет палок в спектре и кривоты синуса - повторюсь, кажется это уже не ко мне. По 4 точкам при 5 отсчетах на период что Катмулл-Ром что Фарроу интерполируют именно так. Это же вам не синк 64-точечный в конце концов! sm.gif
ViKo
Цитата(_Ivana @ Apr 10 2012, 22:45) *
Ну насчет палок в спектре и кривоты синуса - повторюсь, кажется это уже не ко мне. По 4 точкам при 5 отсчетах на период что Катмулл-Ром что Фарроу интерполируют именно так. Это же вам не синк 64-точечный в конце концов! sm.gif

5 отсчетов на период здесь не при чем. Как уже говорил, они однозначно определяют функцию.
Насчет кривого синуса - очень сомнительно, что это лучшее, на что способна полиномиальная интерполяция.
А насчет палок - если вам достаточно такого звука, то можно успокоиться. Гармоники... все равно ухом не расслышать. Ну, будет чуть звонче с гармониками... Но мне, кажется, вы не захотите остановиться на сделанном. При вашей-то энергии. sm.gif

upd. Посмотрел на линейную интерполяцию. Да, пожалуй полиномами не вытянуть синус по пяти точкам.
_Ivana
Цитата(ViKo @ Apr 10 2012, 23:52) *
5 отсчетов на период здесь не при чем. Как уже говорил, они однозначно определяют функцию.
Насчет кривого синуса - очень сомнительно, что это лучшее, на что способна полиномиальная интерполяция.

А вот тут вы и становитесь заложником собственных убеждений! sm.gif ОНИ однозначно определяют функцию, только если эти ОНИ - ВСЕ точки выборки! И причем тут как раз именно то. что при полиномиальной интерполяции мы считаем значение только по N окрестным - в данном случае всего 4-м точкам sm.gif Можно посчитать полином хоть по 20 точкам. но во первых это сложнее. а во вторых - ХУЖЕ по результатам - в силу математики осцилляций и потери точности при расчетах больших степеней.

А насчет звука - повторю предложенное 7 страниц назад - присылайте вавку, ресемплю вам её и послушаете на какой хотите аудиофильской аппаратуре sm.gif Смею предположить, что результат "кривого синуса" вас может сильно удивить sm.gif
ViKo
Цитата(_Ivana @ Apr 10 2012, 22:58) *
Можно посчитать полином хоть по 20 точкам. но во первых это сложнее. а во вторых - ХУЖЕ по результатам - в силу математики осцилляций и потери точности при расчетах больших степеней.

А по скольким будет НЕ хуже, а ЛУЧШЕ? Как насчет восьми?
Цитата
А насчет звука - повторю предложенное 7 страниц назад - присылайте вавку, ресемплю вам её и послушаете на какой хотите аудиофильской аппаратуре sm.gif Смею предположить, что результат "кривого синуса" вас может сильно удивить sm.gif

Нечему там удивляться, с учетом только что сказанного мной. Хорошо, если вы отличите на слух пилу от прямоугольника. sm.gif
(Скажу по секрету, что мне результат интерполяции нужно не слушать, а смотреть)

P.S. "Даю установку" - CIC, CIC, CIC! sm.gif
thermit
Цитата
ViKo:
Как уже говорил, они однозначно определяют функцию.


Вам уже писали, что через эти 5 точек можно провести бесконечное множество функций. Так что никакой однозначности тут нет.
_Ivana
Цитата(ViKo @ Apr 11 2012, 00:05) *
А по скольким будет НЕ хуже, а ЛУЧШЕ? Как насчет восьми?

Нечему там удивляться, с учетом только что сказанного мной. Хорошо, если вы отличите на слух пилу от прямоугольника. sm.gif
(Скажу по секрету, что мне результат интерполяции нужно не слушать, а смотреть)

Цитата
Поэтому на практике часто используют интерполянты степени не выше 5-6.
http://www.exponenta.ru/educat/systemat/ch...shin/theory.asp

А насчет пилы и прямоугольника - тестирование на аппаратуре высокого класса показывает явно недостатки линейной интерполяции, Фарроу и Катмулл-Ром я не отличаю от оригинала, хотя знакомый аудиофил говорит только что-то про "размытость сцены" sm.gif, а Лагранжем 4-го порядка и он доволен sm.gif
ViKo
Цитата(_Ivana @ Apr 10 2012, 23:11) *
хотя знакомый аудиофил говорит только что-то про "размытость сцены" sm.gif, а Лагранжем 4-го порядка и он доволен sm.gif

"Понтовался" ваш аудиофил. Откуда в монозвуке "сцена" и ее размытость?
_Ivana
Цитата(ViKo @ Apr 11 2012, 00:15) *
"Понтовался" ваш аудиофил. Откуда в монозвуке "сцена" и ее размытость?

Главное Вы не понтуйтесь sm.gif С чего вы взяли что я ресемплю только монозвук? sm.gif Откуда такие неверные предположения?
И почитайте мою ссылку - там кратко и доступно про полиномиальную интерполяцию, хотя и далеко не все.
ViKo
Цитата(_Ivana @ Apr 10 2012, 23:19) *
Главное Вы не понтуйтесь sm.gif С чего вы взяли что я ресемплю только монозвук? sm.gif Откуда такие неверные предположения?

Когда ж вы успели? Еще час назад ваш алгоритм "колбасило неподецки"? Вы такой результат "аудиофилу" подсунули? Тогда он много нового мог услышать! sm.gif
_Ivana
Цитата(ViKo @ Apr 11 2012, 00:28) *
Когда ж вы успели? Еще час назад ваш алгоритм "колбасило неподецки"? Вы такой результат "аудиофилу" подсунули? Тогда он много нового мог услышать! sm.gif

Предложение перестать понтоваться и внимательно читать написанное - в силе sm.gif
Час назад - колбасило. А вчера, позавчера и ранее - не колбасило sm.gif Потому что только сегодня с ура я решил вдруг его ещё "усовершенствовать". Так что результат подсовывался вполне корректный.
ViKo
Цитата(_Ivana @ Apr 10 2012, 23:34) *
Предложение перестать понтоваться и внимательно читать написанное - в силе sm.gif
Час назад - колбасило. А вчера, позавчера и ранее - не колбасило sm.gif Потому что только сегодня с ура я решил вдруг его ещё "усовершенствовать". Так что результат подсовывался вполне корректный.

Сегодня я увидел, как у меня кубический интерполятор искажает изображение. И, разглядывая ваши картинки, думаю, что мне подобные алгоритмы не очень подходят. Буду искать что-то другое.
_Ivana
Для верности я бы порекомендовал убедиться что ваш кубический интерполятор считается правильно и без ошибок. Говорю по собственному опыту, а то сами знаете как бывает - показываешь графики а потом оказывается что в расчете ошибка sm.gif

А если все правильно но результат вас не устраивает, можно спросить у тех кто проходил подобный путь поиска, я вроде видел здесь темы про выбор алгоритма интерполяции изображений.

А по поводу интерполяции полиномами больших степеней - вспомнил былое sm.gif ... Как году так в 92-м, во время обучения в универе, развлекался следующим образом - написал программу на Паскале, с выводом графиков (решение системы 10*10 конечно вызывал библиотеку sm.gif ). Задаю 10 точек - точно по прямой линии. итоговый полином - прямая линия. Чуть-чуть смещаю одну из точек вверх или вниз, буквально на немножко - и начинается такое, что просто было страшно. Реально на самом деле страшно становилось - от осознания того факта, к каким ужасным последствиям может приводить одна малейшая неточность.
GetSmart
Цитата(_Ivana @ Apr 11 2012, 00:35) *
А насчет отсутствия палок в спектре, боюсь тут я бессилен sm.gif Судя по картинкам синусоиды, интерполируется она настолько хорошо, насколько может по данным алгоритмам.

Если речь о ВЧ-палках, то из любопытства синком попробуйте. Ширину синка возьмите в районе точек 20-100, в зависимости от точек на период синуса (при 2.5 - 100, чем больше точек в синусе, тем уже синк).

Это так, для понимания "бессилен". По поводу боольшого кол-ва вычислений, ясен пень sm.gif
Михаил_K
Цитата(NiceParty @ Apr 10 2012, 17:59) *
Этот "ужОс" вполне предсказуем, т.к. при таком соотношении исходных частот сигнала и дискретизации ни одна полиномиальная интерполяция не даст нормального результата.

Да я в курсе. Это я просто нашему изобретателю для осмысления подкинул sm.gif, чтобы жизнь легкой не казалась.
_Ivana
Синк пока не пробовал, попробую. Для начала на своем 1С симуляторе sm.gif
Но я верю что там будет все хорошо и при 2 отсчетах на период. Синк же ведь такой баян, который можно растянуть насколько размаха рук хватит sm.gif И точность можно повышать до любых значений, просто растягивая этот баян шире sm.gif Кстати, интересно будет посмотреть на работу синка при 1.3 точки на период sm.gif А при локальных алгоритмах, которые принципиально оперируют только несколькими окрестными точками, совершенно другая ситуация - и это понятно всему здравомыслящему человечеству sm.gif

Кстати, на примере Катмулла-Рома и Фарроу, я понял еще одну очевидную вещь - можно и к Лагранжу 4-го порядка приделать его "близнеца" - Катмулла-Рома 4-го порядка, с заданием условий по производным в конечных точках, чтолько точек будет не 4 а 5. И к Лагранжу любого порядка можно таким образом приделать своего Катмулла-Рома того же порядка. Причем, я предполагаю что математика расчета будет проще по сравнению с Лагранжем. Также предполагаю что точность в свою очередь будет похуже. Вот это я и проверю в 1С sm.gif
SFx
2 _Ivana,
http://ru.wikipedia.org/wiki/Сплайн_Эрмита

Спланы Катмулла-Рома частный случай Эрмита. попробуйте sm.gif О результатах расскажите sm.gif
GetSmart
Цитата(_Ivana @ Apr 11 2012, 13:39) *
Кстати, интересно будет посмотреть на работу синка при 1.3 точки на период sm.gif

Вы сперва разберитесь в т.Котельникова и сотоварищей. Чтоб такие наполеоновские планы на всеобщее оборзерние выставлять sm.gif

Даже для ровно 2.0 точек на период нет никакой гарантии достоверности. Для 2.1 можно, но ширина синка от 20 периодов и чем их больше, тем меньше ВЧ гармоник. Вобщем, чем ближе к 2.0 тем шире нужен синк. Меньше 2.0 сделать принципиально невозможно.
_Ivana
2 SFx я уже пробовал и с известными значениями производных (график ошибки приводил), и угадывать их по другим алгоритмам. Если вашу википедийную ссылку применить к равномерным интервала дискретизации, то среднее арифметическое производных на двух соседних отрезках даст именно Катмулла-Рома. Более того, к нему же приводит попытка интерполяции этих 3-х точек параболой. То что там называется "кардинальным сплайном" я конечно тоже попробую, но навскидку мне кажется результаты будут хуже чем просто Катмулл-Ром. Я пробовал несколько вариантов "угадывания" производной в средней точке по 3-м точкам (используя информацию о значении средней), но на практике все они или были сильно хуже, или асимптотически стремились к Катмуллу-Рому, который информацию об этой средней точке не использует! sm.gif

GetSmart да-да, вы правы. Видимо я злоупотребляю смайликами в своих постах, и становится непонятно когда а шучу. Хотя после шутки в виде предложения интерполировать по 4-м локальным точкам синус частотой 0.49 частоты дискретизации я думал мне тоже можно предложить попробовать интерполировать синком 0.7 частоты дискретизации sm.gif
_Ivana
Попробовал т.н. "кардинальный сплайн" - результаты похожи на то, что мы вводим в Катмулла-Рома некий коэффициент погрешности, который при равенстве нулю дает самый лучший результат. Я не понял его глубокого смысла.
Собственно, если у кого есть идеи как ещё можно рассчитать производную в точке по значениям её и окрестных отсчетов - вэлкам, буду проверять.
А пока сравнительные графики ошибки Лагранжа 3-го и 4-го порядков и Катмулла-Рома 3-го и 4-го порядков. Если при расчете последнего я не ошибся, то его результат довольно странный.
_Ivana
Цитата(rudy_b @ Apr 10 2012, 17:06) *
Не торопитесь. С точки зрения практики, минимизация нужна именно там, где ошибка велика (по сравнению с прочими ее источниками, а их немало). А когда величина ошибки становится малой - не столь важны ее небольшие колебания.

Спасибо за поддержку в нужный момент sm.gif Если я не ошибаюсь, то мне все-таки удалось победить Фарроу на отдельно взятой территории. Кубическим сплайном, как ни странно sm.gif Так что объем вычислений примерно тот же. Более того, я могу влиять на степень отклонения от Фарроу от нулевой до например представленной на картинке и больше sm.gif А при малых ошибках, как вы правильно заметили, и погрешности округлений будут сравнимы, и другие источники подтянутся. Добавил рядом график с шагом поменьше, чтобы было более понятно поведение ошибки.

upd: а ещё вот такие интересные картинки могу получить. То есть, я могу достичь любого предела абсолютной ошибки за меньшее количество отсчетов на период чем Фарроу rolleyes.gif
_Ivana
Еще картинка сравнения базового сплайна Фермана-Зингельшухера 4-го порядка с Лагранжем того же 4-го порядка. Навскидку неоптимизированный расчет коэффициентов полинома требует примерно одинаковых ресурсов. Здесь преимущество не такое явное. Но это первые результаты, может удастся их улучшить.
_Ivana
Картина пикселями "кубический сплайн Фермана-Зингельшухера (красный) побеждает Фарроу (зеленый) на всем поле, требуя при этом примерно столько же вычислений" rolleyes.gif
_Ivana
И снова здравствуйте sm.gif
И снова я придумал очередной алгоритм sm.gif Точнее - несколько, но последний настолько меня вдохновляет, что я снова пишу сюда.
Сразу про количество операций. Допустим в сравнении с Фарроу - Лагранжем 3. Хотя при самом подходе к расчету количества операций выяснились забавные "особенности" - некоторые считают извлечение квадратного корня и сложение отдельными операциями, хотя понятно что они требуют существенно разных машинных ресурсов, а другие считают например что Лагранж - 3 рассчитывается "за 3 умножения и 3 сложения", хотя ровно столько требуется для расчета его полинома, а расчет коэффициентов наверное считается что не занимает операций совсем sm.gif Я рискну высказать свое мнение насчет количества операций и в Фарроу и моего алгоритма. Итак,

Фарроу:
1 умножение на константу
2 сдвига (умножения/деления на степени 2)
3 умножения на переменную
12 сложений (одно на приведение параметра)

Мой алгоритм:
1 умножение на константу
3 сдвига (умножения/деления на степени 2)
3 умножения на переменную
12 сложений

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

ЗЫ сегодня пойду рассказывать суть и получать критические оценки от специалиста из нашего Воронежского государственного университета (лет 20 там не был). Завтра сделаю доклад там же на семинаре среди доцентов и профессоров математического факультета. Если вдруг кого здесь заинтересует - напишу их мнение, независимо от его содержания sm.gif

И конечно же графики ошибки моего алгоритма (красный) в сравнении с Фарроу (зеленый) и Лагранжем 4-го порядка (синий):

Цитата(sup-sup @ Apr 8 2012, 20:53) *
После интерполяции должен остаться такой же спектр в исходной полосе. А за ее пределами нулевой.
Так как реально такого не бывает, качество интерполяции можно сравнивать с классической реализацией (добавление нулей и фильтрация ненужных спектральных компонентов). Это в идеале, действительно, единственно возможная кривая, как сказал ViKo.
А тут уже зависит от качества интерполирующего фильтра. От его неравномерности в полосе, от переходной полосы и от затухания вне полосы. Вот этими параметрами можно и мериться.

И выделенное жирным хотелось бы еще научиться анализировать - чтобы было больше показателей и критериев сравнения алгоритмов. Подскажите куда копать, кто знает.
Timmy
Цитата(_Ivana @ Apr 24 2012, 09:05) *
Мой алгоритм:
1 умножение на константу
3 сдвига (умножения/деления на степени 2)
3 умножения на переменную
12 сложений

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

В выделенном жирным речь идёт не про собственно интерполятор, а про фильтр с передискретизацией, который обычно ставят до интерполятора.
В алгоритме Фэрроу умножение на константу не требует отдельной операции, так как на эту константу можно домножить, к примеру, коэффициенты предшествующего фильтра. Если у Вас также, то это очень крутоsm.gif. И уточните, пожалуйста, величину какой ошибки Вы приводите на графике - среднеквадратичной, максимальной или ещё какой-нибудь.
Fat Robot
Цитата(_Ivana @ Apr 24 2012, 09:05) *
Сейчас занимаюсь сравнительным анализом спектров ресемпленных сигналов, осваиваю СпектраПлюс. Предварительные результаты также радуют, хотя остаются еще вопросы. Например, очень удивляет поведение рассчитанных коэффициентов гармоник и интермодуляционных искажений - при лучшем на глаз спектре они могут быть больше и наоборот. Если кто поможет прояснить этот момент - буду признателен. Картинки показательных спектров могу предоставить.


Не надо никаких спектров. В источниках, где как-то рассматриваются интерполяторы, обычно укзывается 2 характеристики:
- Набор АЧХ и ФЧХ в зависимости от значения задержки
- Сложность

Эта статья вроде была в открытом доступе где-то
http://ieeexplore.ieee.org/xpl/login.jsp?t...%2F01203780.pdf

Успехов

Цитата(_Ivana @ Apr 24 2012, 09:05) *
ЗЫ сегодня пойду рассказывать суть и получать критические оценки от специалиста из нашего Воронежского государственного университета (лет 20 там не был). Завтра сделаю доклад там же на семинаре среди доцентов и профессоров математического факультета. Если вдруг кого здесь заинтересует - напишу их мнение, независимо от его содержания sm.gif


"...Доктора,
Профессора,
Медицинская сестра,
Академик по Китам,
Академик по Котам,
С ними семьдесят студентов,
Тридцать пять корреспондентов,
Два редактора с корректором,
Кинохроника с прожектором,
Юные натуралисты
И другие специалисты. "
_Ivana
Timmy,
Цитата
В алгоритме Фэрроу умножение на константу не требует отдельной операции, так как на эту константу можно домножить, к примеру, коэффициенты предшествующего фильтра. Если у Вас также, то это очень круто

Точно утверждать пока не возьмусь, но мне кажется что и в моем случае этот метод сработает. Кстати, я ещё немножко оптимизировал свой алгоритм - убрал один сдвиг.
Цитата
И уточните, пожалуйста, величину какой ошибки Вы приводите на графике - среднеквадратичной, максимальной или ещё какой-нибудь.

Это графики максимального модуля отклонения (максимальной ошибки), рассчитанные экспериментальным путем.

Fat Robot
Спасибо за ссылку, попробую разобраться.

ЗЫ: я очень хорошо понимаю и разделяю Ваше насмешливо-несерьезное отношение к званиям, регалиям и авторитетам. Но среди них по статистике тоже иногда попадаются достаточно неглупые люди, в моем случае их оказалось примерно 2.5 человека sm.gif И мне было интересно и познавательно с ними пообщаться. А насчет перечисленного Вами видового разнообразия - то оно в не меньшей мере представлено и на этом форуме sm.gif Хочу спросить к какой категории вы относите себя, но из благодарности за помощь и ссылку воздержусь sm.gif А с другой стороны - куда мне было ещё обращаться? Где вот лично Вы были все предыдущие 9 страниц моих эпических плаваний? sm.gif

ЗЗЫ: ссылка судя по всему интересная, но у меня нет денег в виртуальном пространстве и опыта работы с ними, поэтому к сожалению скачать пока не могу sad.gif Готов положить в 10 раз бОльшую сумму (если я правильно понял цифры цен в рублях) на сотовый тому, кто пришлет мне эту статью.
_Anatoliy
ok!
Fat Robot
_Ivana,

1. Я был занят другими делами, не менее интересными, чем обсуждение интерполяторов на интернет-форуме. Только недавно стал на перископную глубину подниматься. Извините, что подвел Вас. Целых 9 страниц... Не ожидал, что Вы такой плодовитый.

2. То, что Вы используете все возможные способы получения информации, - это прекрасно и похвально. Серьезно. А вот то, что Вы напускаете туману "кое-что сделал, но не скажу" при обсуждении - это не серьезно и детский сад.

3. Вы очень глубоко смотрите и видите то, чего нет. Это цитата из детского стиха:Борис Заходер "Кит и Кот". Не более того.

И да.. Освойте Матлаб. Как инструмент, он весьма хороший.

Успехов
_Ivana
_Anatoliy, спасибо. Скиньте ваш номер сотового в личку, положу на него 300р (если не ошибаюсь).

Fat Robot
Цитата
А вот то, что Вы напускаете туману "кое-что сделал, но не скажу" при обсуждении - это не серьезно и детский сад.

Я не настолько наивен и меркантилен, чтобы лелеять надежду получить от этого материальную выгоду. Но чего я действительно не хочу - это чтобы написанное в интернете на весь мир кто-то бы выдал за свои разработки. Я понимаю что такая позиция не лучшим образом свидетельствует о моем моральном облике. Я помню стих 74 Дхаммапады ( http://dhamma.ru/canon/kn/dhp/dhammapada.htm ), глава о глупцах:
Цитата
74. «Пусть думают и миряне, и отшельники, что это сделано мной. Пусть они зависят от меня во всех делах», – таково намерение глупца; его желание и гордость возрастают.

Также я понимаю, что не обнародовав суть, мне трудно рассчитывать на конструктивное обсуждение.
Я буду писать небольшую статейку по этому поводу, возможно многим она покажется банальной и наивной, как будет готова и пройдет цензуру - выложу.

И спасибо за советы и пожелание успеха. Серьезно. Это приятно, особенно на фоне обесценивающих реплик демотивирующего характера от отдельных представителей, хоть я и не воспринимаю их серьезно.
_Anatoliy
Цитата(_Ivana @ Apr 26 2012, 21:32) *
_Anatoliy, спасибо. Скиньте ваш номер сотового в личку, положу на него 300р (если не ошибаюсь).

Спасибо,этого не нужно.Мне было бы гораздо интересней ознакомиться с Вашим алгоритмом.
des00
Цитата(Fat Robot @ Apr 26 2012, 03:54) *
Эта статья вроде была в открытом доступе где-то
http://ieeexplore.ieee.org/xpl/login.jsp?t...%2F01203780.pdf

так вот как оказывается называется реализация интерполятора которую реализовал давным давно %)
_Ivana
Обещанная банальная и наивная статья
Здоровая и конструктивная критика да и прочие впечатления приветствуются sm.gif
ToR_TDA
Цитата(_Ivana @ May 5 2012, 22:02) *
Обещанная банальная и наивная статья
Здоровая и конструктивная критика да и прочие впечатления приветствуются sm.gif

Посмотрел частотные характеристики фильтра Фарроу третьего порядка и сплайна вида [1/5, 1/5]. Привожу графики АЧХ и ГВЗ для временного сдвига 0.25 дискрета. Смотрел при разных значениях x и думаю, в этом что-то есть, интересно, что скажут Гуру.

UPD: Привожу группы характеристик АЧХ, ФЧХ, ГВЗ для Фарроу 3 и [1/5, 1/5] при изменении x от 0 до -1 для Фарроу и от 0 до 1 для сплайна.
_Ivana
ToR_TDA спасибо что подключились и проводите сравнительный анализ. Я пока правда с трудом понимаю связь АЧХ и ФЧХ с алгоритмами интерполяции, поэтому ничего дельного сказать не могу sm.gif Только вижу что Фарроу чуть хуже по линейности АЧХ, существенно лучше по линейности ФЧХ и примерно так же по ГВЗ. Как интерпретировать эти данные? Это показатели некоего фильтра, которым становится интерполятор, при условии смещения сетки дискретизации без изменения её шага? И в идеале должна быть линейная АЧХ и ФЧХ, а "фильтр" не должен вносить изменений в сигнал?
ЗЫ в какой программе Вы анализируете и строите эти графики?
ToR_TDA
Цитата(_Ivana @ May 7 2012, 14:32) *
ToR_TDA спасибо что подключились и проводите сравнительный анализ. Я пока правда с трудом понимаю связь АЧХ и ФЧХ с алгоритмами интерполяции, поэтому ничего дельного сказать не могу sm.gif Только вижу что Фарроу чуть хуже по линейности АЧХ, существенно лучше по линейности ФЧХ и примерно так же по ГВЗ. Как интерпретировать эти данные? Это показатели некоего фильтра, которым становится интерполятор, при условии смещения сетки дискретизации без изменения её шага? И в идеале должна быть линейная АЧХ и ФЧХ, а "фильтр" не должен вносить изменений в сигнал?
ЗЫ в какой программе Вы анализируете и строите эти графики?

Я то же не спец в этом, но представляю себе характеристику идеалного интерполятора в следующем виде: АЧХ - прямая линия (без наклонов и неравномерности), ФЧХ - линейна т. е. прямая линия с постоянным наклоном (если смотреть линейный масштаб по частоте), ГВЗ - это показатель (если можно так говорить) нелинейности ФЧХ и временного сдвига. Таким образом, чем лучше интерполятор, тем более его характеристики приближены к идеальным и все это должно выполняться при разных значениях x.
По поводу АЧХ - Фарроу хуже, что видно из графиков, на счет ФЧХ и ГВЗ (они напрямую и наглядно связаны) мне не совсем ясно, но вроде как Фарроу лучше.
Я использую программу MicroCAP и в ней собрал два фильтра Фарроу отсюда и сплайн по вашим формулам, меняя x получаю группы характеристик.

Цитата(_Ivana @ May 7 2012, 14:32) *
ToR_TDA
Как интерпретировать эти данные? Это показатели некоего фильтра, которым становится интерполятор, при условии смещения сетки дискретизации без изменения её шага?

UPD: Да, мы смещаем сетку на произвольное время меньшее, чем период дискретизации.
_Ivana
Прочитал по диагонали http://www.dsplib.ru/content/filters/linphase/linphase.html
Вообще, там есть что почитать sm.gif Навскидку получается, что требование линейности ФЧХ важно для постоянства ГВЗ, как её производной, а угол наклона определяет только саму величину ГВЗ. Значит может и не так страшно, что у Фарроу меньше угол наклона ФЧХ, по линейности они примерно одинаковы.

ЗЫ да и вообще мне смутно кажется, что величина ГВЗ определяется количеством отсчетов, необходимым для получения значения sm.gif значит у синка или после фильтра по БПФ она будет просто огромная, и это не страшно, главное чтобы постоянная от частоты входного сигнала. Тогда понятно почему у Фарроу ГВЗ меньше - он использует меньше точек sm.gif
ToR_TDA
Цитата(_Ivana @ May 7 2012, 15:48) *
Прочитал по диагонали http://www.dsplib.ru/content/filters/linphase/linphase.html
Вообще, там есть что почитать sm.gif Навскидку получается, что требование линейности ФЧХ важно для постоянства ГВЗ, как её производной, а угол наклона определяет только саму величину ГВЗ. Значит может и не так страшно, что у Фарроу меньше угол наклона ФЧХ, по линейности они примерно одинаковы.

ЗЫ да и вообще мне смутно кажется, что величина ГВЗ определяется количеством отсчетов, необходимым для получения значения sm.gif значит у синка или после фильтра по БПФ она будет просто огромная, и это не страшно, главное чтобы постоянная от частоты входного сигнала. Тогда понятно почему у Фарроу ГВЗ меньше - он использует меньше точек sm.gif

После Вашего комментария я то же это понял) Сам наклон ФЧХ (величина ГВЗ) не столь важен, это только задержка до получения результата на выходе. Важнее постоянство этого наклона в частотной области. Частотная область как 1/f связана с числом отсчетов на период интерполируемого (ресэмплируемого) сигнала. Если частота дискретизации равна 1, то при частоте 0.5 мы получим 2 отсчета на период, и искажения выхода будут определяться искажениями АЧХ и ФЧХ при этой частоте.
_Ivana
Подумал тут на досуге... Если мы будем строить сплайн Эрмита, при этом первые производные в краях интервала будем брать как первые производные интерполяционной кривой (допустим, Лагранжа, хотя можно и любой другой, например моих i-сплайнов) но при условии исключения одной или двух центральных точек интервала, то будет ли это тем мифическим сплайном Акимы который спасает от осцилляций в области выбросов (при наличии последних)? rolleyes.gif Надо где-то найти почитать про сплайн Акимы, а то есть риск что я его тоже заново "изобрету" sm.gif

ЗЫ забавно, в данной работе http://www.ncsystems.ru/user/files/Conference/Obuhov.pdf господин Обухов под видом сплайна Акимы подает нам сплайн Катмулла-Рома, причем делая это в рамках "Госконтракта № 14.740.11.0541 на проведение НИР в рамках ФЦП «Научные и научно-педагогические кадры инновационной России» на 2009 – 2013 годы." rolleyes.gif Либо это "нанотехнологии такие", либо одно из двух sm.gif Где же правда в век Кали? Продолжаем искать....

ЗЗЫ вот здесь больше похоже на правду http://www.iue.tuwien.ac.at/phd/rottinger/node60.html и судя по всему не то что я подозревал а немного похитрее sm.gif
А вот тут должно быть правдее некуда sm.gif http://student.ndhu.edu.tw/~u9111023/akima.pdf
Пока искал, обнаружил немало забавных фамилий помимо Катмулла с Ромом: Кочанек-Бартельс, Fritsch–Carlson и несколько других необычных слов sm.gif Судя по всему, много народу увлекалось этими игрушками...

А интересно Хироши Акима писал в 1970 году, например
Цитата
Next we try to apply the osculatory interpolation method [1, 5]. It is, like our
method, based on a pieeewise function composed of a set of third-degree polynomials,
each applicable to successive intervals of the given points, with the slopes
at the given points locally determined. The only difference between this method and
ours is the manner of determining the slopes at the given points. In the osculatory
interpolation, the determination of the slope involves only three points, i.e. the
data point in question as a center point and two neighboring data points. It is
assumed that the slope of the desired curve at the data point is equal to the slope
at the same point of the curve of the second-degree polynomial passing through the
three points involved.
_Ivana
Придумал кубический сплайн с непрерывными первой и второй производной sm.gif ....... Локальный rolleyes.gif Решу математически, оформлю а-ля предыдущая статья для домохозяек и тоже могу выложить, если кому интересно.

Решил. Графики интерполяционной кривой и её 1 и 2 производных при 16 точках на период. Можно тригонометрию проверять на память, чему равна производная синуса и косинуса sm.gif
UPD: да там и 3 производная оказывается тоже очень даже ничего sm.gif (график справа) Хотя, некоторых это может ввести в понятное недоумение - как же это, кубический сплайн и такая 3-я производная? Отвечу - в Кали-Югу и не такое бывает sm.gif Сам удивляюсь.
_Ivana
Хорошо, убедили, ваша аргументация просто неоспорима sm.gif Тогда последний вопрос - может вы знаете другой форум в интернете, где подобная тема была бы более уместна? Ссылки можно в личку, если по каким-либо причинам, например, правила этого форума, их некорректно писать здесь.
ВитГо
Ivana,

вы еще занимаетесь методами интерполяции или уже забросили это ?

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

сейчас (пока мне не понятно занимаетесь вы этим или нет) я не буду описывать задачу, но если вы сочтете возможным пообщаться то я буду рад
_Ivana
ВитГо, я не считаю себя большим специалистом, и не обещаю волшебный быстрый и точный алгоритм, но если хотите пообщаться - пишите в личку.
_Ivana
CODE
clf reset
N = 10; x = 1:N; y = rand(1, N); h = 0.01; d = 0;
plot(x, y, 'or', 'LineWidth', 2); hold on; grid on; axis on;
title(['Локальная интерполяция случайного набора точек', ...
' полиномом Лагранжа 3 степени, 2 алгоритма расчета.']);
plot(x(1), y(1), 'b-', x(1), y(1), 'g:');
legend('точки', 'мой алгоритм', 'Фарроу');
for k = 1:(N-2)
% мой алгоритм: 1 умножение, 1 сдвиг, 6 сложений
c = d; e = y(k+1) - y(k); d = y(k+2) - y(k+1) - e;
b2 = c/2; b3 = (d - c)/6; b1 = e - b2 - b3;

if (k == 1) continue; end
t = 0:h:1; f = b3.*t.^3 + b2.*t.^2 + b1.*t + y(k);
plot(t+x(k), f, 'b-')

% Фарроу: 1 умножение, 2 сдвига, 8 сложений
a3 = (y(k+2) - y(k-1))/6 + (y(k) - y(k+1))/2;
a1 = (y(k+2) - y(k))/2 - a3;
a2 = y(k+2) - y(k+1) - a1 - a3;

t = -1:h:0; f = a3.*t.^3 + a2.*t.^2 + a1.*t + y(k+1);
plot(t+1+x(k), f, 'g:')
end
_Anatoliy
Ага,у меня тоже меньше 6-ти сложений не получилось,видимо предел.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.