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

 
 
11 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Операция обратная к "скользящему среднему"
Fat Robot
сообщение Jan 7 2014, 21:31
Сообщение #16


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Посмотрите, где лежат полюсы вашего "обратного фильтра".

Цитата(RHnd @ Jan 8 2014, 01:10) *
Пропустите полученный сигнал через обратный фильтр (3*z^3)/(z^2+z+1) и будет исходный сигнал.

Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 7 2014, 21:57
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Топикстартер задал тривиальный вопрос, на который интуитивно нашел правильный ответ.

Скользящее среднее - однородный фильтр
Передаточную ф-цию такого фильтра можно записать как



H(z) = 1/N*(1-z^-N)/(1-Z^-1)

разностное уравнение y(n)=( x(n) - x(n-N) )/N + y(n-1)

Восстанавливающий фильтр будет с пф 1/H(z) = N*(1-z^-1)/(1-z^-N)

разностное уравнение z(n)=( y(n) - y(n-1) )*N + z(n-N) что и получил топикстартер.

При чем тут определенные интегралы и др дивергенции роторов - совершенно непонятно...

Вот скрипт для особо неверующих
Код
clear all;
N=100;

b1=[1 zeros(1,N-1) -1];
a1=[1 -1];


x=randn(1,10000);

y=filter(b1,a1,x)/N;


z=filter(a1,b1,y)*N;

plot(x-z)
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Jan 7 2014, 23:22
Сообщение #18


Местный
***

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



Верующие могут отправлять свои естественные культовые надобности в ином месте. Интуиция - хороша с девочками - согласится/несогласится. А формулы - вещь, напротив, аналитическая. В них смотреть надо.
QUOTE (thermit @ Jan 8 2014, 00:57) *
разностное уравнение z(n)=( y(n) - y(n-1) )*N + z(n-N) что и получил топикстартер.
А тут - вроде смотрим, а видим...

Ещё раз, последний. Есть, известны только y(i). _Все_ z(i) давно пропали. Начинаем по вашей "формуле" восстанавливать z(n). y(n), y(n-1) известны, а z(n-N) - нет. Все, процесс закончен, не успев начаться.

Поясняю, при чём тут интеграл. Формула скользящего среднего z = (y(1) + ... + y(n))/n - это вычисление определённого интеграла аппроксимацией прямоугольниками, т.е. нулевого порядка.

Учите численные методы для 1 курса.

Сообщение отредактировал AndrewN - Jan 7 2014, 23:52
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Jan 8 2014, 07:25
Сообщение #19


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Особо неверующим будет вдвойне интересно, если в канале передачи присутствует шум, или если мы попытаемся восстанавливать данные не с начала передачи.

Цитата(thermit @ Jan 8 2014, 01:57) *
Вот скрипт для особо неверующих

Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 8 2014, 07:52
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
Fat Robot:
Особо неверующим будет вдвойне интересно, если в канале передачи присутствует шум, или если мы попытаемся восстанавливать данные не с начала передачи.



Топикстартер писал где-то про канал с шумом? Или про несначало? Зачем фантазировать?

Цитата
AndrewN:
Ещё раз, последний. Есть, известны только y(i). _Все_ z(i) давно пропали. Начинаем по вашей "формуле" восстанавливать z(n). y(n), y(n-1) известны, а z(n-N) - нет. Все, процесс закончен, не успев начаться.


Естественно, все вышеописанные нами решения верны при нулевых начальных условиях для обоих фильтров. Настоящим индейцам это очевидно. Все остальные "случайности" из разряда ваших фантазий и желания потешить чсв.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 8 2014, 09:04
Сообщение #21


.
******

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



Цитата(_pv @ Jan 6 2014, 20:17) *
да, всё оказалось просто, надо посчитать производную.
скользящее среднее:
Y[i] = (X[i-N] + X[i-N+1] + ... +X[i+N]) / 2N
или если выразить через предыдущий отсчёт:
Y[i] = Y[i-1] + (X[i+N] - X[i-N-1]) / 2N
...
upd: только не 2N, a 2N+1 конечно же.

Откуда взялся предыдущий отсчёт?
В той же формуле кол-во элементов X, если это не ошибка, = 2N+2.

Может оказаться, что для обратного преобразования понадобится ширина фильтра много выше начальной. Если так, то о точном восстановлении можно будет только мечтать. Ну и если исходные числа были не в плавающей точке, то заметные потери ещё будут по дороге туда и обратно.

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


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


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(thermit @ Jan 8 2014, 00:57) *
Вот скрипт для особо неверующих

Я попробовал ваш скрипт из интереса, слегка изменил... Все работает. Но достаточно потерять хотя бы одно входное значение (то, что топикстартер принимает после фильтра, мало ли, когда начнет принимать), как все рассыпается. Что, собственно, уже говорилось.
Код
clear all;
N = 100;
b = [1 1 1 1];
a = [4 0];

x = randn(N, 1);
y = filter(b, a, x);
y(50) = 0;           % потеряли выборку
z = filter(a, b, y);

clf;
hold on;
plot(x, 'b');
% plot(y, 'm');
plot(z, 'r');
% plot(x - z, 'k');
hold off;
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 8 2014, 09:24
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
ViKo:
о достаточно потерять хотя бы одно входное значение (то, что топикстартер принимает после фильтра, мало ли, когда начнет принимать), как все рассыпается.


Да. Для непрерывной обработки длинной последовательности / со случайного момента / в условиях шумов этот способ конечно же не годится. Но у топикстартера про все эти частности нет ни слова.

Цитата
Что, собственно, уже говорилось.


Доброхоты навыдумывали себе кучу условий, назадавали вопросов и принялись бодро на них отвечать.
Отвечать-то надо по существу, а не захламлять топики.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 8 2014, 09:29
Сообщение #24


.
******

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



По существу же сказано, если имеются только данные с выхода фильтра, то для вселенского счастья не хватит одного неотфильтрованного элемента sm.gif


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


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(thermit @ Jan 8 2014, 12:24) *
Доброхоты навыдумывали себе кучу условий, назадавали вопросов и принялись бодро на них отвечать.
Отвечать-то надо по существу, а не захламлять топики.

Не согласен. Топикстартер имеет некую отфильтрованную последовательность данных, и хочет из нее получить исходные. С чего начинались исходные данные, не известно. Явно не с нуля. Включается некий прибор, выходит на рабочий режим, запускается измерение сигнала, обрабатывается, сохраняется последняя часть. Вот эта часть и передается. "Восстановлению не подлежит." laughing.gif

Но, так ли важно восстановить именно то, что было? Допустим, восстановится во что-то другое, но статистически подобное. Чем плохо?
Go to the top of the page
 
+Quote Post
_pv
сообщение Jan 8 2014, 09:33
Сообщение #26


Гуру
******

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



Цитата(GetSmart @ Jan 8 2014, 16:04) *
Откуда взялся предыдущий отсчёт?
В той же формуле кол-во элементов X, если это не ошибка, = 2N+2.

Код
x0, x1, x2, x3, x4, x5, x6
<-------y2------->  +
-   <-------y3------->  
y3 = y2 - x0 + x5

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

всем спасибо за комментарии, прошу прощения, если не точно указал в начале что именно нужно, найденное решение при условии что начальные условия нулевые вполне удовлетворяет.
есть некие измерения при которых датчик своими конечными размерами усредняет показания по своему объёму, просто хотелось понять насколько можно увеличить пространственное разрешение частично скомпенсировав завал высоких частот из-за усреднения, при этом понятно что не бесплатно, а за счёт некоторого увеличения уровня шума после коррекции.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 8 2014, 10:30
Сообщение #27


.
******

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



С рекурсивным алгоритмом в принципе "нечестно". Исследовать точность/достоверность (приближения) необходимо без рекурсии. В общем случае стартовый неотфильтрованный элемент неизвестен. А проход всей последовательности рекурсивным фильтром автоматом расширяет ширину фильтра до всей длины последовательности.

Рекурсия теоретически может вызвать резонанс с амплитудой много выше исходных данных. На этом самом месте "наследуемый" элемент фильтра ограничится переменной и фильтр собьётся, возможно до совершенной непохожести на исходник.

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


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


Знающий
****

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



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

При нулевых начальных условиях и наличии прописи старта фильтра - все вычисляется. Но и если нет стартапа, то тоже можно кое-что сделать. Как пример - если в прописи есть участок, на котором в течении N тактов значение суммы не меняется (т.е. текущее значение равно N-му) - мы точно определяем все элементы суммы и дальше можем все точно вычислять.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 8 2014, 11:58
Сообщение #29


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(ViKo @ Jan 8 2014, 12:31) *
Но, так ли важно восстановить именно то, что было? Допустим, восстановится во что-то другое, но статистически подобное. Чем плохо?

Отвечу сам себе. Для задачи топикстартера - плохо. Никакой дополнительной точности не даст. Наоборот, вроде как шума добавит.

Цитата(rudy_b @ Jan 8 2014, 14:34) *
Но и если нет стартапа, то тоже можно кое-что сделать. Как пример - если в прописи есть участок, на котором в течении N тактов значение суммы не меняется (т.е. текущее значение равно N-му) - мы точно определяем все элементы суммы и дальше можем все точно вычислять.

Подать сигнал калибратора на вход фильтра на некоторое время.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 8 2014, 12:15
Сообщение #30


.
******

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



Цитата(rudy_b @ Jan 8 2014, 17:34) *
Как пример - если в прописи есть участок, на котором в течении N тактов значение суммы не меняется (т.е. текущее значение равно N-му) - мы точно определяем все элементы суммы и дальше можем все точно вычислять.

Из чего это следует?
Если на выходе N элементов подряд имеют одинаковое значение, то они являются функцией N+N-1 входных элементов.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

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

 


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


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