реклама на сайте
подробности

 
 
> Операция обратная к "скользящему среднему"
_pv
сообщение Jan 6 2014, 12:36
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



есть измеренные данные про которые известно, что по ним прошлись скользяшим средним с неким известным размером D.
каким образом можно восстановить исходные данные которые были до усреднения?
из простого на ум приходит только пройтись по этим уже усреднённым данным еще раз таким же скользящим средним и получить оценку ошибки вызванную усреднением, которую потом добавить обратно к первоначальным данным. Оно вроде как работает, но понятно что это хоть и очень простой, но не совсем честный способ.
Как это делать математически правильно?
понятно что можно сделать Фурье, поделить спектр на характеристику скользящего среднего (по сути КИХ фильтра с одинаковыми единичными коэффициентами) и преобразовать обратно. но при делении на нули в том месте где характеристика имеет провалы пожалуй будут проблемы, оно и понятно так как частоты кратные размеру фильтра давятся в ноль и обратному восстановлению не подлежат.
А если без преобразования в частотную область, с какой функцией надо сделать свёртку чтобы получить фильтр обратный скользящему среднему? или даже в общем случае, каким образом преобразовать коэффициенты КИХ фильтра, чтобы произведение исходного фильтра и пробразованного давало 1.
Go to the top of the page
 
+Quote Post
11 страниц V  « < 2 3 4 5 6 > »   
Start new topic
Ответов (45 - 59)
Tarbal
сообщение Jan 10 2014, 14:51
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(GetSmart @ Jan 8 2014, 16:50) *
Скользящее среднее нелинейно искажает высокие частоты. Через фурье или свёртку недостоверно будет. В частоту Fs/2D попадут искажения (обрезки) частот, некратных Fs/2D. Если свернуть выход фильтра с обратной скользящему фильтру функцией, то частота Fs/2D будет плавать по фазе. А она ещё должна будет усилиться в 1.41 раза для восстановления амплитуды. И увеличения амплитуды "мусора".


Разве скользящее среднее не свертка?
As you may have recognized, calculating the simple moving average is similar to the convolution: in both cases a window is slid along the signal and the elements in the window are summarized.
http://matlabtricks.com/post-11/moving-ave...-by-convolution


Сообщение отредактировал Tarbal - Jan 10 2014, 14:55
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 10 2014, 15:33
Сообщение #47


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Tarbal @ Jan 10 2014, 20:51) *
Разве скользящее среднее не свертка?

Свёртка, конечно. С функцией, где все элементы еденичные.
Порождаемые ею алиасы при увеличении периода сигнала в спектральном представлении исчезают. Но не "бесплатно". А частоты, кратные Fs/(2N+1) (в обозначениях автора темы) вообще будут недостоверны в спектре.

Сообщение отредактировал GetSmart - Jan 10 2014, 17:27


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 10 2014, 16:16
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(GetSmart @ Jan 10 2014, 19:33) *
Свёртка, конечно. С функцией, где все элементы еденичные.
Порождаемые ею алиасы при увеличении периода сигнала в спектральном представлении исчезают. Но не "бесплатно".


Свертка линейная операция? или "нелинейно искажает высокие частоты".

По методу оптимальной гомоморфной фильтрации все просто:
Из кепстра обработанной последовательности вычитаем кепстр прямоугольного окна и восстанавливаем из результата исходную последовательность, посредством потенцирования и обратного преобразования Фурье.

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


В процессе дискуссии возник интересный диалог "экспериментаторов" с "теоретиками". Почти уверен, что рекурентное решение в силу своей простоты блестяще справится с работой. Ради такого решения несложно добавить в программу процедуру калибровки, которая и получит достоверное значение. Имеются и другие способы передать одно оригинальное значение и его позицию в процедуру восстановления.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jan 10 2014, 16:55
Сообщение #49


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(TSerg @ Jan 10 2014, 14:35) *
Собственно, ничего нового в компенсации инерционности датчиков нет - этот прием достаточно часто используется, к примеру, в терморегулирующей аппаратуре для компенсации инерционности термопар.

Вот достоверно знаю, что некоторые неплохие математики (те, которые бумагой пользуются) не смогли решить именно такую задачу.
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Jan 10 2014, 16:55
Сообщение #50


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



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

А насчет восстановления... Тут, на самом деле, все еще интереснее и, похоже, однозначного метода восстановления нет.

Как пример. Пусть мы имеем нулевой буфер (длиной N) и подаем синус с периодом N. После N тактов этот синус окажется в буфере и, с N+1 такта, сумма перестанет изменяться. Т.е. на выходе мы имеем константу. Как из нее можно восстановить исходный синус? Т.е. наличие сигналов с периодами N, N/2 и т.д. мы никак не сможем установить только по сумме.

А вот если мы знаем содержимое буфера и восстанавливаем сигнал с его учетом, то получается забавная вещь - на вход приходит константа, а на выходе получаем синус из буфера. Т.е. на выход мы даем константу (в данном случае, иначе - текущее значение суммы)+последний элемент буфера, а в начало буфера, соответственно, кладем полученное значение, иными словами, просто крутим указатель буфера по кольцу с заменой старого элемента на новый.

Фактически, мы сделали обратный фильтр. Но он будет работать, только если исходные значения в буфере при формировании (кодировании) и восстановлении (декодировании) совпадают. Любое расхождение в значениях буферов приведет к каше.

Отсюда получаем забавное применение - шифрование сигналов. Знаешь буфер - получи правду, не знаешь - чушь. С точки зрения вычислительной скорости - очень эффективно, на каждом такте просто суммируем, записываем и сдвигаем кольцевой указатель буфера. Единственная потеря - добавление одного разряда (суммирование двух чисел) и разрядности суммы. И подобрать, например, 128 значений в буфере будет весьма непросто. Стоит подумать.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 10 2014, 17:26
Сообщение #51


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(rudy_b @ Jan 10 2014, 22:55) *
Отсюда получаем забавное применение - шифрование сигналов. Знаешь буфер - получи правду, не знаешь - чушь.

Это вряд ли. Тогда бы значения неизвестного буфера были бы очень чувствительны к малейшим искажениям и шумам, чего не наблюдается. Как оказалось, даже если в качестве неизвестных элементов взять значения из скользящего среднего, то результат рекурсивной формулы хорошо корелирует с исходником.

Кроме прочего, в терминах гармонических сигналов, частот точно кратных Fs/D (D=2N+1 в обозн. автора) на выходе скользящего среднего просто не осталось. Их восстанавливать методом расширения кол-ва отсчётов (как это делает дискретное ПФ, к примеру) нельзя в принципе. И если вдруг они там реально присутствовали, то возникает неопределённость/недостоверность результата восстановления, пропорциональная амплитуде неизвестных гармоник. Но если речь об этом же, то наверное да, если узнать достоверную часть исходника, то эти гармоники по ней же и определяются.

Вот насколько близкие к кратным частоты имеет смысл (или можно) вытягивать через ПФ не искажая другие частоты, любопытно. Можно что-то вытянуть по большому количеству элементов скользящего среднего и подставить в стартовый буфер.

Сообщение отредактировал GetSmart - Jan 10 2014, 19:45


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 10 2014, 18:05
Сообщение #52





Guests






Цитата(Tanya @ Jan 10 2014, 20:55) *
Вот достоверно знаю, что некоторые неплохие математики (те, которые бумагой пользуются) не смогли решить именно такую задачу.


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

Инженерам - "проще", всего лишь надо заставить удовлетворительно работать изделие в рамках существующих физических и финансовых ограничений.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jan 10 2014, 18:39
Сообщение #53


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(TSerg @ Jan 10 2014, 22:05) *
Ничего удивительного - математики вынуждены доказательно приходить к точным решениям, а иначе - они будут выглядеть как проходимцы или перейдут в разряд инженеров, что вряд ли.
Бумага, знаете ли.. - это не железо.

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

Нет. Пытались найти класс функций с параметрами. Оказалось, что ничего толкового не получается. С несколькими постоянными времени. Естественно, все это проверялось не на бумаге.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 10 2014, 19:32
Сообщение #54


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Предположим, что начальное значение было измерено с ошибкой Е.

X'[i-N-1] = X[i-N-1] + E

И вместо
X[i+N] = X[i-N-1] + (Y[i] - Y[i-1]) * 2N

имеем
X'[i+N] = X'[i-N-1] + (Y[i] - Y[i-1]) * 2N



X'[i+N] = X[i-N-1] + E + (Y[i] - Y[i-1]) * 2N

X'[i+N] = X[i+N] + E;

Все значения восстановленной последовательности будут смещены на одну и ту же ошибку Е.

Поссчитав среднее Y'[i] по результатам, получим значение ошибки Е = Y'[i] - Y[i].

Сообщение отредактировал Tarbal - Jan 10 2014, 19:34
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Jan 10 2014, 20:03
Сообщение #55


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



QUOTE (Tanya @ Jan 10 2014, 12:03) *
спектроскописты используют теорему о свертке [...] нужно знать аппаратную функцию. Ее экспериментально получают с помощью априорных знаний или подают дельта-функцию

Так или иначе, аппаратную функцию A можно определить. Настоящие неприятности возникают при решении обратной задачи

x = A-1f

когда выясняется, что она либо вовсе не имеет решений либо имеет несколько (бесконечно много) решений.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 10 2014, 20:16
Сообщение #56


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Tarbal @ Jan 10 2014, 22:16) *
Свертка линейная операция? или "нелинейно искажает высокие частоты".

По методу оптимальной гомоморфной фильтрации все просто:
Из кепстра обработанной последовательности вычитаем кепстр прямоугольного окна и восстанавливаем из результата исходную последовательность, посредством потенцирования и обратного преобразования Фурье.

Она "стирает" о них информацию. Так понятней? На коротких интервалах (естественно шире D) и достаточно близких к кратным частотам, делая неоднозначной их фазу и амплитуду. К примеру, чтобы минимально точно восстановить частоту Fs/(D+1) нужно накопить один период "остатков информации" и чем ближе искомая частота к стёртым, тем больше периодов D нужно будет взять для ПФ.

Цитата(Tarbal @ Jan 11 2014, 01:32) *
Поссчитав среднее Y'[i] по результатам, получим значение ошибки Е = Y'[i] - Y[i].

С постоянкой там нет проблем.

-----------------

Любые повторяющиеся паттерны с периодом D совершенно невидны на выходе скользящего среднего. Точнее, виден только интеграл от них в виде постоянки. Т.о. их не восстановит никакой алгоритм в принципе. Но на фоне них остальной сигнал виден, и выше Fs/D тоже. Чисто математически, ошибка обратного преобразования всегда будет в невидимости некой/любой комбинации D элементов с нулевой суммой. (D - ширина скользящего фильтра)

Цитата(rudy_b @ Jan 10 2014, 22:55) *
Стоит подумать.

Там "зашифровано" будет только минимум информации объёмом в тот самый буфер. Являющейся как раз этими частотами кратными Fs/D.

Но на практике, без экстремально точного постановщика помех, скорее всего 99% информации (самой амплитудно-значимой) будут извлекаться с 99% достоверностью. Если взять спектральную сетку частот, вплоть до Fs/2, то из неё вырежутся кратные периоду скользящего (типа слепого пятна в зрении), а остальные можно увидеть взяв больше элементов с выхода скользящего. Кроме того, восстановить по ним буфер можно с не очень высокой точностью, что слегка размажет спектр. Для практического применения, особенно широкополосных сигналов, это вообще норма.

Ещё нюанс. У неизвестного буфера отдельные элементы, а так же их сумма (если) будут округлены в процессе дискретизации. И шуметь переходя от элемента к элементу скользящего среднего в спектре от Fs/2 до Fs/D. За эту "дрожь" можно было бы зацепиться. Может быть даже чтобы увидеть обнулённые частоты (т.о. весь буфер).

Сообщение отредактировал GetSmart - Jan 11 2014, 07:44


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 10 2014, 23:31
Сообщение #57


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(GetSmart @ Jan 11 2014, 00:16) *
Она "стирает" о них информацию. Так понятней? На коротких интервалах (естественно шире D) и достаточно близких к кратным частотам, делая неоднозначной их фазу и амплитуду. К примеру, чтобы минимально точно восстановить частоту Fs/(D+1) нужно накопить один период "остатков информации" и чем ближе искомая частота к стёртым, тем больше периодов D нужно будет взять для ПФ.


Непонятно что такое D и чему кратны частоты.
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Jan 10 2014, 23:36
Сообщение #58


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



QUOTE (rudy_b @ Jan 10 2014, 19:55) *
Т.е. наличие сигналов с периодами N, N/2 и т.д. мы никак не сможем установить только по сумме.

Вообще с периодами меньше или равными N: N, N-1, N-2 ...

QUOTE (rudy_b @ Jan 10 2014, 19:55) *
получаем забавное применение - шифрование

Вот так, прикоснёшься к теории интегральных преобразований и поневоле придёшь к выводу о непознаваемости мироздания... sm.gif
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 11 2014, 13:55
Сообщение #59


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



А был ли мальчик? sm.gif
Если рассуждать логически, то используя сигнал скользящего среднего в дальнейшей обработке как единственного источника информации об объекте, разработчик уже "согласился" с невидимостью какого-то паттерна, шириной N. Т.о. никакой чуши, как утверждает rudy_b, корректный алгоритм восстановления не добавляет. Тема топика - улучшить разрешение скользящего среднего. А информация на большой ширине данных является достоверной и не принадлежащей неизвестному паттерну. Немного похоже на парадокс. Но на самом деле восстанавливаются/воссоздаются как бы промежуточные (внутри короткого буфера) элементы, принадлежащие к незанулённым ВЧ-частотам. Элементы же дискретизированны во времени с неизвестными промежуточными значениями. Можно настолько много элементов воссоздать, что информационно и "качественно" задавит тот небольшой неизвестный буфер.

При обратном восстановлении частоты, кратные периоду скользящего стёрты в ноль. Остальные, выше Fs/N всё-таки видны на большем интервале. Промежуточные можно достать через ПФ с домножением на коэффициент обратный подавлению, но не слишком большой, т.к. там будет предел сохранности информации для слишком обрезанной гармоники, близкой к запретной. Если буфер для восстановления воссоздать слегка неточно, то пропустив его через рекурсивную формулу, она его компоненты слегка размажет в спектральном представлении и обнулённых частот там просто не останется. Что плохого, если частоты выше Fs/N будут слегка размазаны, но на 99% коррелируют с исходником.

Математические рассуждения про паттерн корректны в идеально точных числах. На практике числа не только квантованы, но и суммы могут округляться. Плюс шум в канале и неидеальности оцифровки. Шум квантования в реалиях может как раз нести полезную (утерянную) информацию.

Сообщение отредактировал GetSmart - Jan 11 2014, 14:28


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
bookd
сообщение Jan 11 2014, 20:32
Сообщение #60


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 4-02-09
Из: Поволжье
Пользователь №: 44 403



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


--------------------
Всеобщая дебилизация не повод наносить ущерб своему здоровью.
Go to the top of the page
 
+Quote Post

11 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 13:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01512 секунд с 7
ELECTRONIX ©2004-2016