📄 eeeband.asv
字号:
%用ellip函数设计滤波器
[y,fs,bits]=wavread('d:\test.wav'); %将文件读进来
%从这里开始设计滤波器
%wn=[1100 3100]/(fs/2);
wp=[1200 3000];ws=[1000 3200];
[N,wc]=ellipord(2*wp/fs,2*ws/fs,1,100); %求的IIR滤波器的阶数
%wn=wc/(fs/2);
[b,a]=ellip(6,1,100,wc); %设计指定的滤波器
%[bz,az]=bilinear(b,a,fs); %映射为数字的
figure(1);
freqz(b,a,512,fs/2);
%axis([0 3500 -160 -50])
figure(2);
subplot(2,3,1);
plot(y,'LineWidth',2);
axis([0 50000 -0.05 0.06]);
xlabel('时间/t') ; ylabel('幅度/A');
title('原信号波形');
spectrum=fft(y); %对采样点进行fft变换
n2=length(spectrum); %计算fft变换后向量的长度
t2=0:n2-1;
subplot(2,3,2);
spreal=abs(spectrum) ; %计算fft变换后序列的实部
spimag=angle(spectrum) ; %计算fft变换后序列的虚部
plot(t2,spreal) ;
axis([0 60000 -0.05 2]);
xlabel('k') %把x轴定义为w
title('原信号幅度') %标明此图形画的是幅度
subplot(2,3,3)
plot(t2,spimag) ;
xlabel('k') %把x轴定义为虚部
title('原信号相位') %把x轴定义为虚部
y0=filter(b,a,y);
n=length(y0); %求得经过低通滤波器的y0的长度
xx=0:n-1;
subplot(2,3,4);
plot(xx,y0);
axis([0 50000 -0.05 0.06]);
xlabel('n')
ylabel('幅度');
title('经过带通滤波器后信号幅度')
y1=fft(y0);
y0am=abs(y1);
subplot(2,3,5);
plot(xx,y0am);
axis([0 60000 -0.05 2]);
title('滤波后信号幅度谱');
yimag=angle(y1);
subplot(2,3,6)
plot(xx,yimag);
xlabel('n');
ylabel('相位');
title('经过带通滤波器后信号相位')
sound(y0,fs)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -