Полосовой фильтр (MatLab)
-
- Сообщения: 64
- Зарегистрирован: 11 сен 2015, 23:37
Re: Полосовой фильтр (MatLab)
Warning: The output is not correct/robust. Coeffs of
B(s)/A(s) are real, but B(z)/A(z) has complex coeffs.
Probable cause is rooting of high-order repeated poles in
A(s).
B(s)/A(s) are real, but B(z)/A(z) has complex coeffs.
Probable cause is rooting of high-order repeated poles in
A(s).
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Полосовой фильтр (MatLab)
Конечно скажется на работе у вас предупреждение гласит что вы получили комплексные к-ты цифрового фильтра из аналогового прототипа. Замените impinvar на bilinear. Должно помочь.
-
- Сообщения: 64
- Зарегистрирован: 11 сен 2015, 23:37
Re: Полосовой фильтр (MatLab)
Если я заменю на bilinear у меня получится, такая вот картинка АЧХ и спектра сигнала на выходе фильтра.
-
- Сообщения: 64
- Зарегистрирован: 11 сен 2015, 23:37
Re: Полосовой фильтр (MatLab)
Видно, что АЧХ имеет в центральную частоту где-то 5 МГц и 23 МГц, а должно быть 7 МГц и 21 МГц и полоса 10 МГц
-
- Сообщения: 64
- Зарегистрирован: 11 сен 2015, 23:37
Re: Полосовой фильтр (MatLab)
Вот написал код в матлабе с помощью функции bilinear и получил след.
А вот АЧХ получил. Что-то не могу понять изменил центральную частоту можно сказать на бум, полосу пропускания вместо 5 поставил 10 и в результате получил такую АЧХ, верно сделал или нет я не знаю, помогите разобратся с этим вопросом
Код: Выделить всё
Center_frequency=14; % Центральная частота аналогового полосового фильтра
[b,a]=butter(5,[2*pi*(Center_frequency-10) 2*pi*(Center_frequency+10)],'s'); % Синтез коэффициентов аналогового фильтра
[bz,az]=bilinear(b,a,fs);
[hz,wz]=freqz(bz,az,[],fs,'whole'); % Комплексный коэффициент передачи цифрового фильтра
h=freqs(b,a,2*pi*wz); % Комплексный коэффициент передачи аналогового фильтра
%plot(wz,abs(h),':') % График ЧХ аналогового фильтра
%hold on
plot(wz,abs(hz)) % График ЧХ цифрового фильтра
%hold off
xlabel('f (МГц)')
xlim([0,fs])
title('Частотная характеристика цифрового фильтра')
grid on
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Полосовой фильтр (MatLab)
при переходе от аналогового фильтра к цифровому ось частот искажается нелинейно (смотри этот раздел).
Поэтому вы и получили искажение частот при переходе от аналогового фильтра к цифровому.
Вы можете пойти двумя путями:
1) Учесть это искажение и провести перерасчет аналогового фильтра так чтобы частоты встали на свои места
2) Расчитывать сразу цифровой фильтр при помощи функции butter
Поэтому вы и получили искажение частот при переходе от аналогового фильтра к цифровому.
Вы можете пойти двумя путями:
1) Учесть это искажение и провести перерасчет аналогового фильтра так чтобы частоты встали на свои места
2) Расчитывать сразу цифровой фильтр при помощи функции butter
-
- Сообщения: 64
- Зарегистрирован: 11 сен 2015, 23:37
Re: Полосовой фильтр (MatLab)
Код: Выделить всё
% Цифровой полосовой фильтр f0=21 МГц, полоса пропускания 10 МГц.
Center_frequency=14; % Центральная частота аналогового полосового фильтра
[b,a]=butter(5,[(Center_frequency-10) (Center_frequency+10)]/fs); % Синтез коэффициентов аналогового фильтра
[hz,wz]=freqz(b,a,[],fs,'whole'); % Комплексный коэффициент передачи цифрового фильтра
plot(wz,abs(hz)) % График ЧХ цифрового фильтра
xlabel('f (МГц)')
xlim([0,fs])
title('Частотная характеристика цифрового фильтра')
grid on
-
- Сообщения: 64
- Зарегистрирован: 11 сен 2015, 23:37
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Полосовой фильтр (MatLab)
да так должно быть лучше
-
- Сообщения: 64
- Зарегистрирован: 11 сен 2015, 23:37
Re: Полосовой фильтр (MatLab)
Не стал создавать новую тему. Если применяется субдискретизация т.е. частота дискретизации ниже частоты которая выбирается из теоремы Котельникова, а зачем это делается. Я правильно понимаю, что это зависит от АЦП и на какой частоте дискретизации он работает? Если да т.е. зависит от АЦП, то всегда ли нужно ставить перед АЦП фильтр, который будет срезать частоты? В интернете нашел вот такую запись: Субдискретизация — Дискретизация сигнала с частотой ниже, чем выбранная по теореме Котельникова. Используется, когда спектр сигнала ограничен не только сверху, но и снизу. Для устранения эффекта наложения спектров используется полосовой антиалиасный фильтр. Меня сильно смутило то, что используется когда спектр сигнала ограничен т.е. если он ограничен то зачем ставить фильтр, не пойму эту запись? Расскажите.