Еще одна задача

User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Еще одна задача

Post by tengiz »

Имеется поток данных, для начала давайте их отфильтруем наложив прямоугольное окно размером n отсчетов, значение оконной функции внутри окна 1, вне окна 0. Простой способ это сделать за константное время на один отсчет это иметь кольцевой буфер на n отчетов и после первоначального накопления добавлять к сумме разницу между текущим отсчетом x и отсчетом за номером x-n.

Теперь усложним задачу и оконную функцию зададим как, скажем, cos (2 pi * t/n) + cos (4 * pi * t / n) + 2 где t меняется от 0 до n-1. При этом мы хотим иметь то же самое свойство, как и у простого фильтра - константное время на вычисление выходного отсчета.
Cheers
Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Еще одна задача

Post by Berlaga »

Толстый намек:
sin(α + β) = sinα cosβ + cosα sinβ
cos(α + β) = cosα cosβ - sinα sinβ
:)
Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Еще одна задача

Post by Berlaga »

Что-то никто не подхватывает. Имхо, слишком много специальной терминологии в условии - фильтр, окно, отсчеты,...
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Еще одна задача

Post by helg »

Терминология-то как раз понятная. И решать - тоже понятно как. А вот смысл: зачем на смену прямоугольнику,как чёртики из табакерки, вылезли именно косинусы, а не классическая действительная экспонента, стоило бы объяснить.
Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Еще одна задача

Post by Berlaga »

На правах рекламы :) -

helg, а вы заметили, что в соседнем топике ваше решение было повержено? :) И поиск лучшего еще не закончен.
viewtopic.php?p=6006523#p6006523
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Re: Еще одна задача

Post by tengiz »

helg wrote:Терминология-то как раз понятная. И решать - тоже понятно как. А вот смысл: зачем на смену прямоугольнику,как чёртики из табакерки, вылезли именно косинусы, а не классическая действительная экспонента, стоило бы объяснить.
Классичская действительная экспонента не имеет свойства иметь нулевую первую производную ни при каком значении аргумента. С косинусом/синусом или с експонентой компексного агрумента этого можно легко достичь. А нулевая первая производная оконной функции на краях окна (вдобавок к нулевому значению функции окна) часто бывает полезна.
Cheers
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Re: Еще одна задача

Post by tengiz »

Berlaga wrote:Толстый намек:
sin(α + β) = sinα cosβ + cosα sinβ
cos(α + β) = cosα cosβ - sinα sinβ
:)
Понятно :). Но также интересны некоторые тонкости потенциальных решений, например, как обходиться с накопление ошибки при операциях с правающей точкой. Если решение базируется на чем-то более изысканном, чем плавающая точка, тоже будет интересно посмотреть.
Cheers

Return to “Работа и Карьера в IT”