metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-01-27 11:07 am

Неравномерные отсчеты и DSP

А вот скажите, как правильно делать FFT, цифровую фильтрацию и тому подобное, если отсчеты сигнала идут неравномерно во времени? Вся теория, которую я когда либо изучал, обычно заточена под постоянный период отсчетов.
В принципе, можно было бы в лоб интерполировать равномерные отсчеты, исходя из неравномерных данных, но может есть еще какие-нибудь вуду-оккультные методы?

[identity profile] aamonster.livejournal.com 2011-01-27 09:16 am (UTC)(link)
Более конкретную задачу поставьте, ребе. Чего именно надо добиться?

FFT, скорее всего, не получится в принципе (там вся оптимизация основана на регулярности отсчётов), а вот преобразование Фурье проблем не вызовет. FIR/IIR станут посложнее, чем для равномерных отсчётов (коэффициенты придётся вычислять каждый раз, а не брать из таблицы), но терпимо.

[identity profile] psilogic.livejournal.com 2011-01-27 09:30 am (UTC)(link)
я бы не заморачивался, интерполировал

[identity profile] jarud-bra0n.livejournal.com 2011-01-27 09:35 am (UTC)(link)
Numerical Recipes, параграф 13.8, "Spectral Analysis of Unevenly Sampled
Data": http://www.mpi-hd.mpg.de/astrophysik/HEA/internal/Numerical_Recipes/f13-8.pdf
и еще десять верхних ссылок с гугла. FAST версия тоже имеется.

[personal profile] ex0_planet 2011-01-27 09:41 am (UTC)(link)
интерполяция - уже неявное наложение фильтра, в этом-то и проблема.

[personal profile] ex0_planet 2011-01-27 09:45 am (UTC)(link)
Наш бывший декан в свое время этим занимался, даже книжку написал:
http://window.edu.ru/window_catalog/pdf2txt?p_id=28533&p_page=1 но там в основном расчет автокорелляций всяческих.

Все что я для себя оттуда вынес - это мрак и ужос с червями, если нет крайней необходимости, лучше этим не заниматься. Если, например, сетка отсчетов приблизительно равномерна, а имеется просто некоторое дрожание то, может, и фиг с ним?

[identity profile] psilogic.livejournal.com 2011-01-27 09:46 am (UTC)(link)
да. но если неравномерность отсчетов не очень большая, то сильно хуже не будет. такая интерполяция "сгладит" возможные всплески длительностью порядка максимального расстояния между отсчетами. это
будет как фильтр отсекающий очень высокие частоты - в районе предельных для FFT, которые все равно вряд ли удастся засечь

[personal profile] ex0_planet 2011-01-27 09:50 am (UTC)(link)
Ну единичные выколотые отсчеты, как мне кажется, FFT и так сожрет (в том смысле, что погрешность размажется по спектру и ее вклад будет небольшой). Вопрос в том, что делать, когда таких много.

[personal profile] ex0_planet 2011-01-27 09:53 am (UTC)(link)
А интерполяция - наверное проще будет сразу поделить на ноль устроить децимацию и тупо отрезать кусок спектра фильтром, и дальше работать с уменьшенной частотой отсчетов - один хрен в высоких частотах мусор.

[identity profile] nivanych.livejournal.com 2011-01-27 01:59 pm (UTC)(link)
Неявное наложение фильтра на отсутствующие данные.

[identity profile] nivanych.livejournal.com 2011-01-27 02:05 pm (UTC)(link)
Можно, конечно, любой фильтр ассоциировать с интерполятором.
Если этот фильтр ещё и высокие частоты убирать будет, тогда даже интуитивно будет похож на интерполятор.
Но только, с неравномерными отсчётами, спектр этого фильтра получится ну очень непохож на отсекание по частоте.

[identity profile] nivanych.livejournal.com 2011-01-27 02:08 pm (UTC)(link)
Вавлет быстрый можно сделать методом, похожим на схему лифтинга, причём даже, для отображения любого метрического в линейное.
Если базовые всплески имеют компактный носитель, что в данном случае, попросту говоря, означает, что на пределами некой области они обращаются в ноль, или же, для практики достаточно, чтобы были достаточно малы, как какие-нибудь гауссианы.

[identity profile] nicka-startcev.livejournal.com 2011-01-27 06:39 pm (UTC)(link)
А нужно ли тут именно _F_FT?
Может имеет смысл тупо свёртывать с (ко)синусоидами? Метод, формально, процессороёмче, но на практике выкидывается интерполяция, то есть, надо аккуратно считать сложность. Или не заморачиваться сложностью, если явно есть запас производительности.

[identity profile] metaclass.livejournal.com 2011-01-27 06:50 pm (UTC)(link)
А, действительно, можно ж в лоб сворачивать. Производительность в данном случае пофигу.

[identity profile] nicka-startcev.livejournal.com 2011-01-27 06:53 pm (UTC)(link)
Причём, сворачивать не со всем базисом сразу, а только с нужными частотами.