|
|
  |
Придумал алгоритм интерполяции. Протестируем результаты?, вызов от дилетанта |
|
|
|
May 6 2012, 13:53
|
Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796

|
Цитата(_Ivana @ May 5 2012, 22:02)  Обещанная банальная и наивная статьяЗдоровая и конструктивная критика да и прочие впечатления приветствуются  Посмотрел частотные характеристики фильтра Фарроу третьего порядка и сплайна вида [1/5, 1/5]. Привожу графики АЧХ и ГВЗ для временного сдвига 0.25 дискрета. Смотрел при разных значениях x и думаю, в этом что-то есть, интересно, что скажут Гуру. UPD: Привожу группы характеристик АЧХ, ФЧХ, ГВЗ для Фарроу 3 и [1/5, 1/5] при изменении x от 0 до -1 для Фарроу и от 0 до 1 для сплайна.
Сообщение отредактировал ToR_TDA - May 7 2012, 10:20
Эскизы прикрепленных изображений
|
|
|
|
|
May 7 2012, 10:32
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
ToR_TDA спасибо что подключились и проводите сравнительный анализ. Я пока правда с трудом понимаю связь АЧХ и ФЧХ с алгоритмами интерполяции, поэтому ничего дельного сказать не могу  Только вижу что Фарроу чуть хуже по линейности АЧХ, существенно лучше по линейности ФЧХ и примерно так же по ГВЗ. Как интерпретировать эти данные? Это показатели некоего фильтра, которым становится интерполятор, при условии смещения сетки дискретизации без изменения её шага? И в идеале должна быть линейная АЧХ и ФЧХ, а "фильтр" не должен вносить изменений в сигнал? ЗЫ в какой программе Вы анализируете и строите эти графики?
|
|
|
|
|
May 7 2012, 10:55
|
Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796

|
Цитата(_Ivana @ May 7 2012, 14:32)  ToR_TDA спасибо что подключились и проводите сравнительный анализ. Я пока правда с трудом понимаю связь АЧХ и ФЧХ с алгоритмами интерполяции, поэтому ничего дельного сказать не могу  Только вижу что Фарроу чуть хуже по линейности АЧХ, существенно лучше по линейности ФЧХ и примерно так же по ГВЗ. Как интерпретировать эти данные? Это показатели некоего фильтра, которым становится интерполятор, при условии смещения сетки дискретизации без изменения её шага? И в идеале должна быть линейная АЧХ и ФЧХ, а "фильтр" не должен вносить изменений в сигнал? ЗЫ в какой программе Вы анализируете и строите эти графики? Я то же не спец в этом, но представляю себе характеристику идеалного интерполятора в следующем виде: АЧХ - прямая линия (без наклонов и неравномерности), ФЧХ - линейна т. е. прямая линия с постоянным наклоном (если смотреть линейный масштаб по частоте), ГВЗ - это показатель (если можно так говорить) нелинейности ФЧХ и временного сдвига. Таким образом, чем лучше интерполятор, тем более его характеристики приближены к идеальным и все это должно выполняться при разных значениях x. По поводу АЧХ - Фарроу хуже, что видно из графиков, на счет ФЧХ и ГВЗ (они напрямую и наглядно связаны) мне не совсем ясно, но вроде как Фарроу лучше. Я использую программу MicroCAP и в ней собрал два фильтра Фарроу отсюда и сплайн по вашим формулам, меняя x получаю группы характеристик. Цитата(_Ivana @ May 7 2012, 14:32)  ToR_TDA Как интерпретировать эти данные? Это показатели некоего фильтра, которым становится интерполятор, при условии смещения сетки дискретизации без изменения её шага? UPD: Да, мы смещаем сетку на произвольное время меньшее, чем период дискретизации.
Сообщение отредактировал ToR_TDA - May 7 2012, 11:22
|
|
|
|
|
May 7 2012, 11:48
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Прочитал по диагонали http://www.dsplib.ru/content/filters/linphase/linphase.htmlВообще, там есть что почитать  Навскидку получается, что требование линейности ФЧХ важно для постоянства ГВЗ, как её производной, а угол наклона определяет только саму величину ГВЗ. Значит может и не так страшно, что у Фарроу меньше угол наклона ФЧХ, по линейности они примерно одинаковы. ЗЫ да и вообще мне смутно кажется, что величина ГВЗ определяется количеством отсчетов, необходимым для получения значения  значит у синка или после фильтра по БПФ она будет просто огромная, и это не страшно, главное чтобы постоянная от частоты входного сигнала. Тогда понятно почему у Фарроу ГВЗ меньше - он использует меньше точек
Сообщение отредактировал _Ivana - May 7 2012, 12:02
|
|
|
|
|
May 7 2012, 12:15
|
Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796

|
Цитата(_Ivana @ May 7 2012, 15:48)  Прочитал по диагонали http://www.dsplib.ru/content/filters/linphase/linphase.htmlВообще, там есть что почитать  Навскидку получается, что требование линейности ФЧХ важно для постоянства ГВЗ, как её производной, а угол наклона определяет только саму величину ГВЗ. Значит может и не так страшно, что у Фарроу меньше угол наклона ФЧХ, по линейности они примерно одинаковы. ЗЫ да и вообще мне смутно кажется, что величина ГВЗ определяется количеством отсчетов, необходимым для получения значения  значит у синка или после фильтра по БПФ она будет просто огромная, и это не страшно, главное чтобы постоянная от частоты входного сигнала. Тогда понятно почему у Фарроу ГВЗ меньше - он использует меньше точек  После Вашего комментария я то же это понял) Сам наклон ФЧХ (величина ГВЗ) не столь важен, это только задержка до получения результата на выходе. Важнее постоянство этого наклона в частотной области. Частотная область как 1/f связана с числом отсчетов на период интерполируемого (ресэмплируемого) сигнала. Если частота дискретизации равна 1, то при частоте 0.5 мы получим 2 отсчета на период, и искажения выхода будут определяться искажениями АЧХ и ФЧХ при этой частоте.
Сообщение отредактировал ToR_TDA - May 7 2012, 16:24
|
|
|
|
|
May 9 2012, 07:38
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Подумал тут на досуге... Если мы будем строить сплайн Эрмита, при этом первые производные в краях интервала будем брать как первые производные интерполяционной кривой (допустим, Лагранжа, хотя можно и любой другой, например моих i-сплайнов) но при условии исключения одной или двух центральных точек интервала, то будет ли это тем мифическим сплайном Акимы который спасает от осцилляций в области выбросов (при наличии последних)?  Надо где-то найти почитать про сплайн Акимы, а то есть риск что я его тоже заново "изобрету"  ЗЫ забавно, в данной работе http://www.ncsystems.ru/user/files/Conference/Obuhov.pdf господин Обухов под видом сплайна Акимы подает нам сплайн Катмулла-Рома, причем делая это в рамках "Госконтракта № 14.740.11.0541 на проведение НИР в рамках ФЦП «Научные и научно-педагогические кадры инновационной России» на 2009 – 2013 годы."  Либо это "нанотехнологии такие", либо одно из двух  Где же правда в век Кали? Продолжаем искать.... ЗЗЫ вот здесь больше похоже на правду http://www.iue.tuwien.ac.at/phd/rottinger/node60.html и судя по всему не то что я подозревал а немного похитрее  А вот тут должно быть правдее некуда http://student.ndhu.edu.tw/~u9111023/akima.pdfПока искал, обнаружил немало забавных фамилий помимо Катмулла с Ромом: Кочанек-Бартельс, Fritsch–Carlson и несколько других необычных слов  Судя по всему, много народу увлекалось этими игрушками... А интересно Хироши Акима писал в 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 - May 9 2012, 09:27
|
|
|
|
|
May 10 2012, 18:10
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Придумал кубический сплайн с непрерывными первой и второй производной  ....... Локальный  Решу математически, оформлю а-ля предыдущая статья для домохозяек и тоже могу выложить, если кому интересно. Решил. Графики интерполяционной кривой и её 1 и 2 производных при 16 точках на период. Можно тригонометрию проверять на память, чему равна производная синуса и косинуса  UPD: да там и 3 производная оказывается тоже очень даже ничего  (график справа) Хотя, некоторых это может ввести в понятное недоумение - как же это, кубический сплайн и такая 3-я производная? Отвечу - в Кали-Югу и не такое бывает  Сам удивляюсь.
Сообщение отредактировал _Ivana - May 10 2012, 20:19
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 16 2013, 12:19
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 13-09-12
Пользователь №: 73 529

|
Ivana,
вы еще занимаетесь методами интерполяции или уже забросили это ?
мне нужен алгоритм быстрой интерполяции, по возможности с минимальным количеством операций..
сейчас (пока мне не понятно занимаетесь вы этим или нет) я не буду описывать задачу, но если вы сочтете возможным пообщаться то я буду рад
|
|
|
|
|
Nov 7 2013, 14:13
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
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
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|