Полосовой фильтр (MatLab)

Андрей1991
Сообщения: 64
Зарегистрирован: 11 сен 2015, 23:37

Полосовой фильтр (MatLab)

Сообщение Андрей1991 »

Ребят у меня такой вопрос, мне дан гармонический сигнал с частотой 63 МГц, дан полосовой фильтр вот с такими параметрами: полоса пропускания 14 МГц, центральная частота 63 МГц так вот не могу понять как это записать в MatLab. Записать какой сигнал будет на выходе. С Matlab только сейчас начал разбираться. Подскажите, как правильно записать!

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Полосовой фильтр (MatLab)

Сообщение Santik »

Ну для решения такой задачи наверное надо ещё знать частоту дискретизации сигнала и уровень в дБ по которому определяется полоса фильтра. :-)

Андрей1991
Сообщения: 64
Зарегистрирован: 11 сен 2015, 23:37

Re: Полосовой фильтр (MatLab)

Сообщение Андрей1991 »

Такс, ну допустим я хочу взять полосовой фильтр Баттерворта 5 порядка, так как АЧХ будет иметь небольшую прямоугольность и крутые скаты, то что мне нужно. Но когда я записываю это в матлабе и хочу посмотреть, что будет на выходе при подаче на вход гармонического сигнала я получаю ерунду даже смущает то, что по оси у получается степень (^306). Скажите а зачем нужно знать частоту дискретизации? У меня же аналоговый фильтр? Я извиняюсь конечно, за то , что ерунду несу. Вот код в в матлабе и картинки АЧХ и отфильтрованного сигнала.
Вложения
Новый точечный рисунок1.jpg
Новый точечный рисунок.jpg
Новый точечный рисунок.jpg (36.89 КБ) 14564 просмотра

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Полосовой фильтр (MatLab)

Сообщение Santik »

АЧХ выглядит правдоподобно.
Мешает мощный пик на второй картинке. Постройте график не Т=0, а с Т=0.03
И вообще надо подумать какой сигнал подавать. cos может быть и не подходит, т.к. считается, что до Т=0 сигнал = 0, а потом сразу 1. Т.е. производная = бесконечности. Поэтому, с учётом задержки, которую даёт фильтр и получается огромный выброс на Т=0.016
Может сигнал sin(2*Pi*63*t) больше подойдет. А вообще надо сигнал на оконную функцию умножать.

Андрей1991
Сообщения: 64
Зарегистрирован: 11 сен 2015, 23:37

Re: Полосовой фильтр (MatLab)

Сообщение Андрей1991 »

Все записал как надо, получил выходной сигнал который нужен, только теперь нужно этот сигнал оцифровать с частотой дискретизации 84 МГц и не пойму как правильно это сделать,записать в матлабе? У меня сигнал на выходе записался в массив в столбец это правильно? Необходимо ли перевернуть этот массив в строку?
Вложения
Новый точечный рисунок.jpg

Андрей1991
Сообщения: 64
Зарегистрирован: 11 сен 2015, 23:37

Re: Полосовой фильтр (MatLab)

Сообщение Андрей1991 »

При записи аналогового фильтра я там брал частоту дискретизации 840 МГц, получается у меня так что в сигнале при двух импульсах 16801 значений, а дальше мне нужно оцифровать мой сигнал с частотой уже 84 МГц, это у меня по заданию, так вот получается мой интервал времени T=0:dt:T_пачки*10 (нужно умножить на 10), это правильно?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Полосовой фильтр (MatLab)

Сообщение Бахурин Сергей »

Вам надо разобраться с тем какой сигнал и фильтр вы моделируете. Если вы моделируете фильтрацию цифровым фильтром то сигнал должен быть цифровой. Если аналоговым фильтром то нельзя использовать функцию filter как вы ее используете.

В матлабе все работает с оцифорванным сигналом.

PS зачем вставлять код как картинку? Вставляйте как код чтобы можно было скопировать и попробовать.

Андрей1991
Сообщения: 64
Зарегистрирован: 11 сен 2015, 23:37

Re: Полосовой фильтр (MatLab)

Сообщение Андрей1991 »

У меня есть структурная схема, сигнал сперва идет на аналоговый полосовой фильтр с центральной частотой 63 МГц и полоса пропускания 14 МГц, а потом уже на АЦП (с частотой дискретизации 84 МГц). Я получил фильтр Баттерворта он мне подходит, но проблема в том, чтобы получить сигнал на выходе аналогового фильтра мне нужно брать частоту дискретизации 840 МГц, так как в этом случае шаг по времени будет маленький, и я смогу получить сигнал на выходе такой в принципе, что и на входе только задержкой, если я возьму 84 МГц, он мне на выходе строит сигнал с уменьшенной амплитудой и сигнал становится не похож на синусойду. Если я беру 840 МГц, строю график получаю на выходе сигнал, потом его оцифроваю с частотой дискретизации 84 МГц (и получаю так, что в одном периоде у меня уже 8400 отсчетов, а должно быть 840 по расчетам(это сказалось на спектре сигнала)) он мне должен спектр сигнала показать на частоте 21 МГц и 63 МГц, а он мне строит ерунду, и я вот в этом запутался!

Код: Выделить всё

% Исходные данные
U_m=input('Амплитуда сигнала (В): ');          % Амплитуда сигнала
F_prom=63;                                     % Промежуточная частота (МГц)
T_rep=10;                                      % Период повторения импульсов (мкс)
F_rep=1/T_rep;                                 % Частота повторения (МГц)
tau_imp=1;                                     % Длительность импульса (мкс)
N_imp=input('Количество импульсов в пачке: '); % Количество импульсов в пачке
T_pack=N_imp*T_rep;                            % Длительность пачки радиоимпульсов (мкс)
F_Doppler=input('Доплеровский сдвиг частоты (кГц): ')*10^(-3); % Доплеровский сдвиг частоты (МГц)
fs=84;                                         % Частота дискретизации (МГц)
dt=1/fs;                                       % Шаг дискретизации (мкс)
tay_delay=input('Задержка отраженного сигнала (мкс): '); % Задержка отраженного сигнала (мкс)
N_sample_1=T_rep*fs;                           % Количество отсчетов в одном периоде
N_sample_imp=tau_imp*fs;                       % Количество отсчетов в импульсе

figure(1)
% Отр. от цели сигнал. Сигнал представляет собой ког. пачку импульсов.
t=0:0.001:T_pack;                              % Интервал времени пачки импульсов
d=[0.5:10:T_pack];                             % Массив значений центров импульсов
y=U_m*pulstran(t-tay_delay,d,'rectpuls',1);    % Формирование последовательности прямоугольных импульсов
b=cos(2*pi*(F_prom+F_Doppler)*t);              % Формирование гармонического сигнала т.е. ВЧ заполнение в импульсе
x=y.*b;                                        % Получение радиоимпульса путем умножения огибающей сигнала и гармонического сигнала
plot(t,x),grid                                 % График принятого отраженного сигнала
ylim([-U_m-0.5,U_m+0.5])                       % Интервал значений по оси y

figure(2)
% Аналоговый полосовой фильтр f0=63 МГц, полоса пропускания 14 МГц.
Center_frequency=63;                           % Центральная частота аналогового полосового фильтра
Sampling_Rate=10*84;                           % Частота дискретизации (МГц)
[b,a]=butter(4,[2*pi*(Center_frequency-7) 2*pi*(Center_frequency+7)],'s'); % Синтез коэффициентов фильтра
f=0:1/T_pack:Sampling_Rate-1/T_pack;           % Массив значений частоты
h=freqs(b,a,2*pi*f);                           % Комплексный коэффициент передачи
plot(f,abs(h))                                 % График АЧХ полосового фильтра                                 
xlim([30 90])                                  % Интервал значений по оси x

figure(3)
H=tf(b,a);                                     % Передаточная функция соответствующая своим коэффициентам числителя и знаменателя
dt_1=1/Sampling_Rate;
t=0:1/Sampling_Rate:T_pack-dt_1;               % Массив значений времени   
y=U_m*pulstran(t-tay_delay,d,'rectpuls',1);    
b=cos(2*pi*(F_prom+F_Doppler)*t);
x=y.*b; 
Signal=lsim(H,x,t);                            % Отклик (выхода) фильтра на входной сигнал 
plot(t,Signal,'b'),grid                        % График процесса на выходе фильтра %xlim([0 2])                                  % Интервал значений по оси x

figure(4)
% Оцифрованный (отраженный) сигнал. Сигнал на выходе АЦП
T=0:dt/10:T_pack-dt/10;                        % Массив дискретного времени                                               % Массив отсчетов отраженного сигнала
stem(T,Signal,'linew',2),grid                  % График оцифрованного отраженного сигнала
xlim([0 10]) 
ylim([-U_m-0.5,U_m+0.5])                       % Интервал значений по оси y


figure(5)
% Вычисление спектра от дискретного (отраженного) сигнала.
NFFT=N_sample_1*N_imp*10;                      % Количество дискретных отсчетов сигнала
df=fs/NFFT;                                    % Шаг по частоте в спектре (МГц)
f=(0:NFFT-1)*df;                               % Диапозон частот в спектре
Spectr=abs(fft(Signal,NFFT));                   % Вычисление спектра
stem(f,Spectr,'.'),grid                        % График дискретного спектра
xlim([0,80])                          % Интервал значений по оси x

Андрей1991
Сообщения: 64
Зарегистрирован: 11 сен 2015, 23:37

Re: Полосовой фильтр (MatLab)

Сообщение Андрей1991 »

Вводимые параметры можно взять такие:
Амплитуда 1 В
Количество импульсов -1
Доплеровская частота -25 кГц
задержка 1 мкс
Вот такой спектр на 3 рисунке я получаю, если в программе задаю, где аналоговый фильтр частоту дискретизации 840 МГц.
И сигнал соответственно будет выглядеть на второй картинке таким образом
Если частоту дискретизации уменьшу в 10 раз т.е. будет 84 МГц(это я все меняю в аналоговом фильтре), получаю сигнал на первой картинке, что неправильно даже сигнал не похож на синусойду и уменьшенная амплитуда.
Дело в том, что у меня на входе вместе сигналом идет шум гаус. Фильтр мне должен пропустить сигнал вместе шумом согласно моей полосе пропускания, так ведь? Так вот я хотел это сделать все пошагово, хотел свой сигнал с шумом пропустить вместе шумом через фильтр, получить на выходе сигнал, а потом его оцифровать и тут получается ерунда, как со спектром так и должно быть в сигнале оцифрованном 840 отсчетов, а не 8400.
Вложения
Безымянный1.jpg
Сигнал на выходе (с частотой дискретизации 840 МГц).jpg
Новый точечный рисунок.jpg

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Полосовой фильтр (MatLab)

Сообщение Бахурин Сергей »

У вас сигнал на частоте 63 МГц а цифруете вы его с частотой 84 Мгц что не правильно потому что вы не выдержали требование теоремы отсчетов которая говорит что оцифровку необходимо вести с частотой большей чем удвоенная верхняя частота сигнала, т.е надо цифровать как минимум с частой 2* 63 МГц.

Ответить