📄 ms25_5.m
字号:
%频率采样法设计带通(2点过渡带)
N=41;T1=0.5941;T2=0.109; %输入设计数据
n=0:N-1;ws1=0.3*pi;ws2=0.8*pi; %输入截止频率
wp1=0.45*pi;wp2=0.65*pi;
N1=round((wp2-wp1)/(2*pi/N)); %计算通带采样点数
N1=N1+mod(N1+1,2); %使其为奇数
N2=round((N-2*N1-9)/4); %计算阻带采样点数
N2=N2+mod(N2+1,2); %使其为奇数
N3=N-2*N2-2*N1-8;
%建立符幅特性样本序列
A=[zeros(1,N2),T2,T1,ones(1,N1),T1,T2,zeros(1,N3),T2,T1,ones(1,N1),T1,T2,zeros(1,N2)];
theta=-pi*(N-1)/N*[0:N-1]; %建立相位特性样本序列
Hk=A.*exp(j*theta); %建立频率特性样本序列
h=real(ifft(Hk)); %由反变换求脉冲序列,去掉运算误差造成的虚部
[db,mag,pha,grd,w]=freqz_m(h,1); %由脉冲序列求得频率特性
m=(N-1)/2;wa=[0:m-1]/m; %为作图求0-1π的样点数,建立对应的频率向量
subplot(2,2,1),plot(wa,A(1:m),'.-',w/pi,mag,'k');
axis([0,1,-0.1,1.1]);title('理想和实际滤波器幅频响应');
xlabel('频率(单位:\pi)');ylabel('H(e^{j\omega})');
set(gca,'XTickMode','manual','XTick',[0,ws1/pi,wp1/pi,wp2/pi,ws2/pi,1]);
set(gca,'YTickMode','manual','YTick',[0,T2,T1,1]);grid
subplot(2,2,3),plot(w/pi,db,'k');
axis([0,1,-100,1.2]);title('实际滤波器幅频响应(dB)');
xlabel('频率(单位:\pi)');ylabel('G(dB)');
set(gca,'XTickMode','manual','XTick',[0,ws1/pi,wp1/pi,wp2/pi,ws2/pi,1]);
set(gca,'YTickMode','manual','YTick',[-40,-20,0]);grid
subplot(2,2,2),stem(n,h,'k');
title('滤波器脉冲响应');
xlabel('n');ylabel('h(n)');
subplot(2,2,4),plot(w/pi,pha,'k');
axis([0,1,-4,4]);title('实际滤波器相频响应');
xlabel('频率(单位:\pi)');ylabel('\phi(\omega');
set(gca,'XTickMode','manual','XTick',[0,ws1/pi,wp1/pi,wp2/pi,ws2/pi,1]);
set(gca,'YTickMode','manual','YTick',[-pi,0,pi]);grid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -