Прямоугольный импульс в крокозябру.
От: denisko http://sdeniskos.blogspot.com/
Дата: 10.04.10 16:40
Оценка:
Леди и джентельмены, уберегите от изобретания велосипеда. Есть задача — на вход элемента подается прямоугольный импульс, на выходе получается крокозября некоторая. Есть информация, что элемент производящий крокозябру -- рекурсивный фильтр порядка не выше N. Необходимо в реальном времени оценить параметры этого фильтра( могут меняться скачком от импульса к импульсу). Задача оценить передаточную характеристику с помощью
1) МНК не рулит -- тупо неустойчивый фильтр получается и медленно.
2) МНК с регуляризацией не рулит -- либо неустойчиво либо не похоже и совсем медленно.
Что советуют ведущие собаководы по этому поводу?
<Подпись удалена модератором>
Re: Прямоугольный импульс в крокозябру.
От: Rostislav_Pro  
Дата: 13.04.10 17:42
Оценка:
Здравствуйте, denisko, Вы писали:

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

D>1) МНК не рулит -- тупо неустойчивый фильтр получается и медленно.
D>2) МНК с регуляризацией не рулит -- либо неустойчиво либо не похоже и совсем медленно.
D>Что советуют ведущие собаководы по этому поводу?

Нужно найти фильтр, который преобразует прямоугольный импульс в дельта-импульс (хотя бы приближенно), и отфильтровать им кракозябру
Re: Прямоугольный импульс в крокозябру.
От: Rostislav_Pro  
Дата: 13.04.10 18:21
Оценка:
Ради интереса набросал примерчик на матлабе, который восстанавливает импульсную характеристику из кракозябры:


%передаточная ф-я, которую надо найти (НЧ фильтр баттерворта например)
[b,a] = butter(4,.1);

%реальная импульсная характеристика
imp_real = filter(b,a,[1 zeros(1,100)])

%прямоугольный импульс, кот. подаем на вход
square_imp = [1 1 1 1 1 zeros(1,100)];

%кракозябра
craco = filter(b,a,square_imp);

%инверсный фильтр, который из прямоугольного импульса делает почти
%единичный
b_inv = [1 -1];
a_inv = [1 0 0 0 0 -.99 0 0 0 0 -.01];

%восстановленная импульсная характеристика
imp_restored = filter(b_inv,a_inv,craco);

%рисуем рядом восстановленную хар-ку и реальную, и видим что очень похожи
plot(1:100,imp_real(1:100),1:100,imp_restored(1:100)+.01)
Re: Прямоугольный импульс в крокозябру.
От: D14  
Дата: 13.04.10 18:25
Оценка:
Здравствуйте, denisko, Вы писали:

D>1) МНК не рулит -- тупо неустойчивый фильтр получается и медленно.

D>2) МНК с регуляризацией не рулит -- либо неустойчиво либо не похоже и совсем медленно.

А как пробовали? Сами кодировали или какой-нибудь system identification toolbox натравили?
Re[2]: Прямоугольный импульс в крокозябру.
От: D14  
Дата: 14.04.10 06:13
Оценка:
Здравствуйте, Rostislav_Pro, Вы писали:

R_P>Нужно найти фильтр, который преобразует прямоугольный импульс в дельта-импульс (хотя бы приближенно)


Это частный случай исходной задачи, когда крякозябра является дельта-импульсом. То есть предложеная методика сродни тому, как если бы предложить решать систему линейных уравнений преварительно посчитав обратную матрицу и умножив её на вектор из правой части. Вроде верно предложение, но практической пользы не представляет.
Re[2]: Прямоугольный импульс в крокозябру.
От: denisko http://sdeniskos.blogspot.com/
Дата: 14.04.10 06:17
Оценка:
Здравствуйте, Rostislav_Pro, Вы писали:

R_P>Здравствуйте, denisko, Вы писали:


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

D>>1) МНК не рулит -- тупо неустойчивый фильтр получается и медленно.
D>>2) МНК с регуляризацией не рулит -- либо неустойчиво либо не похоже и совсем медленно.
D>>Что советуют ведущие собаководы по этому поводу?

R_P>Нужно найти фильтр, который преобразует прямоугольный импульс в дельта-импульс (хотя бы приближенно), и отфильтровать им кракозябру

На первый взгляд получается фильтрованная крокозябра, а не параметры фильтра переводящего прямоугольник в крокозябру.
<Подпись удалена модератором>
Re[3]: Прямоугольный импульс в крокозябру.
От: denisko http://sdeniskos.blogspot.com/
Дата: 14.04.10 06:19
Оценка:
Здравствуйте, denisko, Вы писали:

А не, я ступил. Вроде должно прокатить. Спасибо!
<Подпись удалена модератором>
Re[2]: Прямоугольный импульс в крокозябру.
От: denisko http://sdeniskos.blogspot.com/
Дата: 14.04.10 06:20
Оценка:
Здравствуйте, D14, Вы писали:

D14>Здравствуйте, denisko, Вы писали:


D>>1) МНК не рулит -- тупо неустойчивый фильтр получается и медленно.

D>>2) МНК с регуляризацией не рулит -- либо неустойчиво либо не похоже и совсем медленно.

D14>А как пробовали? Сами кодировали или какой-нибудь system identification toolbox натравили?

Сам. У нас есть свой фрейворк для этого дела.
<Подпись удалена модератором>
Re[3]: Прямоугольный импульс в крокозябру.
От: Rostislav_Pro  
Дата: 14.04.10 06:38
Оценка:
Здравствуйте, D14, Вы писали:

D14>Здравствуйте, Rostislav_Pro, Вы писали:


R_P>>Нужно найти фильтр, который преобразует прямоугольный импульс в дельта-импульс (хотя бы приближенно)


D14>Это частный случай исходной задачи, когда крякозябра является дельта-импульсом. То есть предложеная методика сродни тому, как если бы предложить решать систему линейных уравнений преварительно посчитав обратную матрицу и умножив её на вектор из правой части. Вроде верно предложение, но практической пользы не представляет.


Зато теперь постановка задачи упростилась: по импульсной характеристике подобрать фильтр. И больше нет никаких прямоугольных импульсов и кракозябр. Такую задачу наверняка кто-то уже решал, и можно гуглить. В исходном виде гуглябельность меньше
Re[4]: Прямоугольный импульс в крокозябру.
От: D14  
Дата: 14.04.10 06:53
Оценка:
Здравствуйте, Rostislav_Pro, Вы писали:

R_P>Зато теперь постановка задачи упростилась: по импульсной характеристике подобрать фильтр. И больше нет никаких прямоугольных импульсов и кракозябр. Такую задачу наверняка кто-то уже решал, и можно гуглить. В исходном виде гуглябельность меньше


В исходном варианте автор просил рекурсивный фильтр, и если я правильно понял идею, типа такого http://www.mathworks.co.jp/access/helpdesk/help/toolbox/ident/ref/arx.html. А вы же предлагаете использовать нерекурсивный фильтр Винера. Последнему без разницы во что преобразовывать сигнал. Хоть в дельта-функцию, хоть сразу в крякозябру
Re[2]: Прямоугольный импульс в крокозябру.
От: Andrew_manik Беларусь  
Дата: 15.04.10 09:19
Оценка:
Здравствуйте, Rostislav_Pro, Вы писали:

R_P>Ради интереса набросал примерчик на матлабе, который восстанавливает импульсную характеристику из кракозябры:


Поясни плиз некоторые моменты в коде.

R_P>

R_P>%передаточная ф-я, которую надо найти (НЧ фильтр баттерворта например)
R_P>[b,a] = butter(4,.1);

R_P>%реальная импульсная характеристика
R_P>imp_real = filter(b,a,[1 zeros(1,99)]);

R_P>%прямоугольный импульс, кот. подаем на вход
R_P>square_imp = [1 1 1 1 1 zeros(1,100)];
Давай, что бы не мучиться с памятью фильтра определим прямоугольный импульс как
square_imp = [0 ones(1,99)];

R_P>%кракозябра
R_P>craco = filter(b,a,square_imp);

R_P>%инверсный фильтр, который из прямоугольного импульса делает почти
R_P>%единичный
R_P>b_inv = [1 -1];
R_P>a_inv = [1 0 0 0 0 -.99 0 0 0 0 -.01];
Ростислав, поясни плиз, почему написал такую импульсную характеристику инверсного фильтра.
По-идее надо всего лишь b_inv = [1 -1]; a_inv = 1;

R_P>%восстановленная импульсная характеристика
R_P>imp_restored = filter(b_inv,a_inv,craco);
imp_restored(1)=[]; Убираем групповую задержку восстановленной импульсной характеристики

R_P>%рисуем рядом восстановленную хар-ку и реальную, и видим что очень похожи
R_P>plot(1:100,imp_real,'b', 1:99,imp_restored,'r--')

И как я понял надо еще оценить параметры фильтра по импульсной характеристике
[rest_b,rest_a]=stmcb(imp_restored,4,4);

Сравниваем результаты
fvtool(b,a);
fvtool(rest_b,rest_a);

R_P>
Re[3]: Прямоугольный импульс в крокозябру.
От: Rostislav_Pro  
Дата: 21.04.10 13:57
Оценка:
Здравствуйте, Andrew_manik, Вы писали:

A_>Поясни плиз некоторые моменты в коде.


R_P>>%инверсный фильтр, который из прямоугольного импульса делает почти

R_P>>%единичный
R_P>>b_inv = [1 -1];
R_P>>a_inv = [1 0 0 0 0 -.99 0 0 0 0 -.01];
A_>Ростислав, поясни плиз, почему написал такую импульсную характеристику инверсного фильтра.
A_>По-идее надо всего лишь b_inv = [1 -1]; a_inv = 1;

Подобрал экспериментальным путем. Пытался с помощью фильтрации из прямоугольного импульса сделать что-то похожее на единичный.
С вышеописанным фильтром получается очень похоже. А с b_inv=[1 -1], a_inv=1 боюсь, что получится 2 импульса — один положительный, а через N отсчетов отрицательный.

A_>И как я понял надо еще оценить параметры фильтра по импульсной характеристике

A_>[rest_b,rest_a]=stmcb(imp_restored,4,4);
Круто, я про такую функцию в матлабе даже не знал
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.