Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Придумал алгоритм интерполяции. Протестируем результаты?
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3, 4
_Ivana
А выложите вашу реализацию, если вам не трудно, интересно посмотреть. Хоть в мой матлабовский код впишите третьим вариантом. Я вывел свой вышепредставленный алгоритм из другой математической модели, нежели стандартная постановка задачи построения полинома по 4 точкам.
_Anatoliy
Цитата(_Ivana @ Nov 8 2013, 23:02) *
А выложите вашу реализацию, если вам не трудно, интересно посмотреть. Хоть в мой матлабовский код впишите третьим вариантом. Я вывел свой вышепредставленный алгоритм из другой математической модели, нежели стандартная постановка задачи построения полинома по 4 точкам.

Я когда то его уже выкладывал.Переделывать на скрипт нет желания,берите уж какой есть.
_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('точки', 'мой алгоритм', 'Фарроу по Anatoliy');
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-')

% Фарроу по _Anatoliy: 1 умножение, 2 сдвига, 6 сложений
p = y(k) - y(k+1); q = (y(k+2) - y(k))/2;
a3 = ( (y(k+2) - y(k-1))/3 + p )/2;
a2 = p + q; a1 = q - 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
_Ivana
Цитата(_Anatoliy @ Nov 8 2013, 18:16) *
Ага,у меня тоже меньше 6-ти сложений не получилось,видимо предел.
Оказывается, не предел ) На досуге подумал, получил 5 сложений, 1 умножение и 1 сдвиг.
CODE
clf reset
N = 10; x = 1:N; y = rand(1, N);
h = 0.01; g = y(3) - y(2); d = g - y(2) + y(1);
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('точки', 'мой алгоритм', 'Фарроу по Anatoliy');
for k = 2:(N-2)
% мой алгоритм: 1 умножение, 1 сдвиг, 5 сложений
c = d; e = g; g = y(k+2) - y(k+1); d = g - e;
b2 = c/2; b3 = (d - c)/6; b1 = e - b2 - b3;
t = 0:h:1; f = b3.*t.^3 + b2.*t.^2 + b1.*t + y(k);
plot(t+x(k), f, 'b-')

% Фарроу по _Anatoliy: 1 умножение, 2 сдвига, 6 сложений
p = y(k) - y(k+1); q = (y(k+2) - y(k))/2;
a3 = ( (y(k+2) - y(k-1))/3 + p )/2;
a2 = p + q; a1 = q - 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
Цитата(_Ivana @ May 17 2014, 18:07) *
Оказывается, не предел ) На досуге подумал, получил 5 сложений, 1 умножение и 1 сдвиг.

Только для чего всё это? Я,например,не собирался реализовывать свой вариант в FPGA,баловство это.Делал просто чтоб молодость вспомнить.
_Ivana
Ну как, спорт, например )... Или вы к тому, чтобы я занялся делом, а не выводил пяти...пых обезьян, как герой мультфильма Саус Парк? На сайте Бахурина лежит "оптимизированный алгоритм", вы его еще оптимизировали на 2 сложения, я на 3 сложения и сдвиг... И никому не интересны эти результаты?
_Anatoliy
Цитата(_Ivana @ May 18 2014, 18:11) *
Ну как, спорт, например )... Или вы к тому, чтобы я занялся делом, а не выводил пяти...пых обезьян, как герой мультфильма Саус Парк?

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

Цитата(_Ivana @ May 18 2014, 18:11) *
И никому не интересны эти результаты?

А насчёт результатов не торопитесь,пусть народ посмотрит.
_Ivana
Спасибо вам, _Anatoliy, искренне. За представленную ранее собственную оптимизацию, за высланную давно статью, за честность ваших оценок и за приятное общение. Независимо от мнений "посмотревшего народа" или их отсутствия.
_Anatoliy
Цитата(_Ivana @ May 18 2014, 20:37) *
Спасибо вам, _Anatoliy, искренне. За представленную ранее собственную оптимизацию, за высланную давно статью, за честность ваших оценок и за приятное общение. Независимо от мнений "посмотревшего народа" или их отсутствия.

Да не за что.Всегда пожалуйста.
Krys
Топикстартер, выложите, пожалуйста, Вашу статью ещё раз. По той ссылке уже не забрать. Может, её просто прикрепить к сообщению на форуме?
ViKo
Наткнулся на статью нашего ... топикстартера. rolleyes.gif
https://habrahabr.ru/post/282441/
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.