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>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.