[an error occurred while processing this directive]
уй, грабли в Матлабе, все мозги отшибли, может кто что посоветует(+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Wukrly 01 сентября 2004 г. 15:04

Нужно сделать оригинальный фильтр. Коэффициент передачи определяется формулой
N = 24;
f = 0:0.1:N;
K = (1 + j*6.4*f)./(5 + j*6.4*f);

Пользуясь функцией invfreqz, определяю коэффициенты искомого фильтра
t2 = f.*(pi/N);
[b, a] = invfreqz(K, t2, 2, 2);

Проверяю АЧХ по контрольным точкам
fisp = [0.03 0.2 0.5 1 2 5 10 15]; %ИспытательнаЯ частота
for fi = 1:8
schag = 1/(2*N);
t = 0:schag:schag*766;
z = sin (2*pi*t*fisp(fi));
plot(t, z)
h = title(['испытательный сигнал частотой ' sprintf('%2.1f', fisp) ' кГц']);
set (h, 'FontName', 'Courier');
y = filter(b, a, z);
plot(y);
h = title(['сигнал после фильтрации ' sprintf('%2.1f', fisp) ' кГц']);
set (h, 'FontName', 'Courier');
end

Все тип топ.
Теперь заменяю функцию filter эталонной программой, написанной по диаграмме на функцию, взятой из helpa. Кстати, формула, написанная под helpовской диаграммой, совсем не соответствует диаграмме. Она соответствует прямой форме DF1.

for fi = 1:8
schag = 1/(2*N);
t = 0:schag:schag*766;
z = sin (2*pi*t*fisp(fi));
plot(t, z)
h = title(['испытательный сигнал частотой ' sprintf('%2.1f', fisp) ' кГц']);
set (h, 'FontName', 'Courier');
h = xlabel('номера отсчетов');
set (h, 'FontName', 'Courier');

% модель фильпра транспонированнаЯ форма DF2t
ki = length(z);
zi = [0 0 0];
yk(1)= 0;
for ii = 2:ki
yk(ii)= z(ii)*b(1) + zi(3);
zii3= z(ii)*b(2) + a(1)*yk(ii) + zi(2);
zii2= z(ii)*b(3) + a(2)*yk(ii) + zi(1);
zii1= a(3)*yk(ii);
zi(3)= zii3;
zi(2)= zii2;
zi(1)= zii1;
end
plot(t(1:50), yk(1:50))
h = title('фильтр неустойчив');
set (h, 'FontName', 'Courier')
end

Фильтр неустойчив. Другие формы фильтра, например DF2 или DF1, также получаются неустойчивыми. Немного поковырялся с коэффициентами а и в. Такое впечатление, что коэффициенты неправильные. Играясь с коэффициентами, можно добиться устойчивости фильтра и как-то повлиять на его АЧХ.
ВОПРОСЫ
1)меняются ли коэффициенты а и в с изменением формы фильтра? В учебнике вроде бы написано, что нет.
2)правильно ли составлена программа по диаграмме?
3)формула формы DF1 вообще соответствует формуле из helpa где тут еще могут быть грабли?

% модель фильпра прЯмаЯ форма DF1
zi = [0 0 0 0 0];
for ii = 2:ki
yk(ii)= b(1)*z(ii) + b(2)*zi(1) + b(3)*zi(2) + a(1)*zi(3) + a(2)*zi(4) + a(3)*zi(5);
zi(2)= zi(1);
zi(1)= z(ii);
zi(5)= zi(4);
zi(4)= zi(3);
zi(3)= yk(ii);
end



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru