Kokos 0 5 ноября, 2010 Опубликовано 5 ноября, 2010 · Жалоба Доброго времени суток! недано начал учиться моделировать цифровые фильтры в Matlab,с фнч-фвч вроде все понятно. остановился на полосовике: кусочек программы: 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 получаем АЧХ непонятно почему при подаче частоты 10МГЦ на выходе нет ничего, 20-30МГЦ спектр на выходе присутствует если поставить порядок 20 то получается следующая АЧХ: не подскажете где я не прав?что нужно почитать? полный код 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)|') Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Skryp 0 27 ноября, 2010 Опубликовано 27 ноября, 2010 · Жалоба Я сам недавно стал работать с Matlab, поэтому просто делаю фильтры в Filter Design & Analysis Toll (команда в окне матлаба >> fdatool). А в Вашем коде попробуйте сделать Fs=2Fv ,т.е Fs=2*pi*3e7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться