2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Полосовой фильтр в Matlab
Сообщение06.11.2010, 21:17 
Аватара пользователя


30/11/08
25
Добрый вечер!
начиню моделировать полосовик в матлаб:
Код:
Fs = 2*pi*1e8;                                     %частота дискретизации       
Wp = 2*pi*[0.5e7 1.5e7]/Fs;                 %полоса пропускания
Ws = 2*pi*[0.45e7 1.55e7]/Fs;
Rp = 0.5;
Rs = 40;

[n,Wn] = ellipord(Wp,Ws,Rp,Rs)
[b,a]= ellip(n,Rp,Rs,Wp);

[h,f]= freqz(b,a);                                  %рис1 АЧХ
plot(f/pi,abs(h))


n = 7
получается такая АЧХ:
http://imglink.ru/pictures/05-11-10/520c6173651eac85343e8a73dbfca9f0.jpg

но при подаче синусоиды с частотой 10МГц на выходе нет ничего .20-30МГц спектр есть
не подскажите в чем проблема?

при n = 20 получается такая АЧХ:
http://imglink.ru/pictures/05-11-10/f98ae71447384c9226c8e65ecbd3f500.jpg
тоже непонятно почему...

полный код

(Оффтоп)

Fs = 2*pi*1e8;
Wp = 2*pi*[0.50e7 1.50e7]./Fs; %полоса пропускания
Ws = 2*pi*[0.45e7 1.55e7]./Fs;
Rp = 0.5;
Rs = 40;

T = 1/Fs; % Период дескретизации
L = 10000; % Длинна сигнала
t = (0:L-1)*T; % Вектор времени

[n,Wn] = ellipord(Wp,Ws,Rp,Rs)
[b,a]= ellip(n,Rp,Rs,Wp);
[h,w]= freqz(b,a); %рис1 АЧХ
plot(w/pi,abs(h))

f0 = 1e7; %частота несущей
x = 1*sin(2*pi*f0*t);
figure
plot((1:200),x(1:200))
title('Входной сигнал')
xlabel('Время')

NFFT = 2^nextpow2(L); %следующая степень 2
Y = fft(x,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1); %сетка частот

% график модуля спектра
figure
plot(f,2*abs(Y(1:NFFT/2+1)))
axis ([0 2*f0 0 1])
title('Модуль спектра x(t)')
xlabel('Частота (Hz)'),
ylabel('|x(f)|')

%s1 = filter(b,a,x);
%figure
%plot(s1) %рис 3 сигнал на выходе фильтра

h = impz(b,a); %импульсная функция
figure
plot(h)

y = conv(x,h); %свертка
figure
plot((1:200),y(1:200))

V= fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);


figure
plot(f,2*abs(V(1:NFFT/2+1)))
axis ([0 2*f0 0 1])
title('Модуль спектра y(t)')
xlabel('Частота (Hz)')
ylabel('|Y(f)|')

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group