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

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

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

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

Скажите, не пойму как получились такие фазовые спектры. У меня есть два строба которые накладываются на сигнал, два строба идут друг за другом. Скажите, почему глядя на фазовые спектры 1-ой последовательности стробов и 2-ой последовательности стробов фазы у них разные, за счет чего так? Фазовые спектры строились только на гармониках частоты повторения. Привожу амплитудные спектры и фазовые спектры
Вложения
Новый точечный рисунок1.jpg
Новый точечный рисунок.jpg

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

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

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

ну наверно потому что стробы ваши сдвинуты по времени относительно друг друга

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

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

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

У меня вопрос, я вот пропустил сигнал через АЦП, предварительно он прошел через полосовой фильтр с полосой 14 МГц, у меня получилась вот такая картинка она меня смущает так как получилось так что произошло наложение спектров, частота дискретизации 28 МГц и частота сигнала 63 МГц, скажите почему этот спектр получился так, что боковые лепестки, если смотреть относительно главного лепестка получились не одного уровня? Скажите может в этом случае необходимо уменьшить полосу пропускания фильтра, чтобы не было наложений?
Вложения
Новый точечный рисунок.jpg

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

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

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

Можете подсказать?

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

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

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

без матлаб кода ничего нельзя понять

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

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

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

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

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

figure(1)
% Аналоговый полосовой фильтр f0=63 МГц, полоса пропускания 14 МГц
Center_frequency=63;                           % Центральная частота аналогового полосового фильтра
[b,a]=butter(5,[2*pi*(Center_frequency-7) 2*pi*(Center_frequency+7)],'s'); % Синтез коэффициентов фильтра
f=0:F_rep:90;                                  % Массив значений частоты (МГц)
h=freqs(b,a,2*pi*f);                           % Комплексный коэффициент передачи
plot(f,abs(h))                                 % График АЧХ полосового фильтра 
grid on
H=tf(b,a);                                     % Передаточная функция соответствующая своим коэффициентам числителя и знаменателя

figure(2)
% Принятый сигнал
t=(0:N_sample_signal-1)*dt;
u=U_m*cos(2*pi*(F_prom+F_Doppler)*t);          % Массив значений принятого сигнала
s=find(t>=0&t<=tau_delay);                     % Формирование задержки сигнала
u(s)=0;
for n=0:N_imp-1
s=find(t>=tau_imp+n*T_rep+tau_delay&t<=n*T_rep+T_rep+tau_delay);
u(s)=0;
end 
stem(t,u,'.')                                  % График принятого сигнала
grid on

figure(3)
% Формирование шума. Нормальный случайный процесс
noise=sigma_noise*randn(1,length(t));          % Формирование шума
plot(t,noise)                                  % График шума                          
grid on

figure(4)
% Сигнал на выходе АЦП
signal_with_noise=u+noise;                         % Аддитивная смесь сигнала и  шума
signal_with_noise_ADC=lsim(H,signal_with_noise,t); % Смесь сигнала и  шума на выходе АЦП
signal_with_noise_ADC=signal_with_noise_ADC';      % Изменение вектора столбца на вектор строку
plot(t,signal_with_noise_ADC)                      % График cмеси сигнала и  шума на выходе АЦП                                               
grid on

figure(5)
% Вычисление спектра сигнала на выходе АЦП(ADC)
NFFT=N_sample_signal;                                 % Количество дискретных отсчетов сигнала
df=fs/NFFT;                                           % Шаг по частоте в спектре (МГц)
f=(0:NFFT-1)*df;                                      % Массив значений частот (МГц)
Spectr_exit_ADC=abs(fft(signal_with_noise_ADC,NFFT)); % Вычисление амплитудного спектра на выходе АЦП
plot(f,Spectr_exit_ADC)                               % График амплитудного спектра на выходе АЦП
grid on
xlim([0,fs])                                          % Интервал значений по оси x

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

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

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

матлаб не знает что такое lsim. tf тоже не понятно зачем используется.

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

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

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

Скажите я правильно понимаю, что цифровой полосовой фильтр должнен иметь две АЧХ. После того как я оцифровал сигнал с частотой дискретизации 28 МГц, сигнал у меня идет с частотой 7 МГц, поступает на вход цифрового фильтра, какая должна быть АЧХ фильтра?

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

Center_frequency=7;                            % Центральная частота цифрового полосового фильтра
[b,a]=butter(5,[2*pi*(Center_frequency-5) 2*pi*(Center_frequency+5)],'s'); % Синтез коэффициентов фильтра
f=0:F_rep:28;                                  % Массив значений частоты (МГц)
h=freqs(b,a,2*pi*f);                           % Комплексный коэффициент передачи цифрового фильтра
plot(f,abs(h))                                 % График АЧХ полосового фильтра
Картинка цифрового полосового фильтра
Вложения
Новый точечный рисунок.jpg

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

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

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

Я вот написал код в матлабе, скажите при каждом запуске выходит предупреждение, я даже не знаю повлияет ли это на цифровую обработку сигнала?

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

enter_frequency=21;                          % Центральная частота аналогового полосового фильтра
[b,a]=butter(12,[2*pi*(Center_frequency-5) 2*pi*(Center_frequency+5)],'s'); % Синтез коэффициентов аналогового фильтра                                    
[bz,az]=impinvar(b,a,fs);                       
[hz,wz]=freqz(bz,az,[],28,'whole');           % Комплексный коэффициент передачи цифрового фильтра
h=freqs(b,a,2*pi*wz);                         % Комплексный коэффициент передачи аналогового фильтра
plot(wz,abs(h),':')                           % График ЧХ аналогового фильтра  

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

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

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

Что за предуреждение?

Ответить