clear;
clc;
[y,fs]=audioread('C:\Users\jin\Desktop\shuzixinghao\dazuoye\audio1801017.WAV'); %将音频文件导入到matlab中
T=1/fs; %采样时间,fs为44100
t=(0:length(y)-1)*T;%时间
f=(0:length(y)-1)*fs/length(y);
figure(1);
subplot(2,1,1);%输入信号时域曲线
plot(t,y);
title('原始信号时域');
xlabel('时间');
ylabel('振幅');
subplot(2,1,2);%输入信号频域曲线
n=length(y);
y1=fft(y,n); %对n点进行傅里叶变换到频域
plot(f,abs(y1));
title('原始信号频谱');
xlabel('F(Hz)');
ylabel('H(jw)');
grid on
%滤波器
rp = 0.1;%通带最大衰减
rs=100;%阻带最小衰减
Ft=fs;
Fp=2100;
Fs=4000;
wp=2*pi*Fp/Ft;
ws = 2*pi*Fs/Ft ; %设置指标参数
[N,wpo]=cheb1ord(wp,ws,rp,rs,'s'); %计算切比雪夫1型模拟低通滤波器阶数和通带边界频率
[b,a]=cheby1(N,rp,wpo,'s'); %计算切比雪夫1型模拟低通滤波器系统函数系数
[bz,az]=bilinear(b,a,1);%双线性变换
%滤波
z=filter(bz,az,y);
z_fft=fft(z); %滤波后的信号频谱
figure(2);%低通滤波器特性
[h,w]=freqz(bz,az);
title('切比雪夫1型模拟低通滤波器');
plot(w*Ft/(2*pi),abs(h));
grid;
figure(3);
subplot(2,1,1); %滤波音频时域
plot(t,z);
title('低通滤波后的信号波形');
xlabel('时间/s');
ylabel('幅度');
grid;
subplot(2,1,2);%滤波音频频域
zf = abs(z_fft);
plot(f(1:(n-1)),zf(1:(n-1)));
title('低通滤波后信号的频谱');
xlabel('频率/Hz');
ylabel('幅度');
grid;
sound(z,fs); %播放语音
audiowrite('l8019100039.wav',z,fs);