📄 fir.m
字号:
[a,fs]=wavread('现在语音处理技术.wav');%读入宁波大学语音
a=a(:,1);
FS=length(a);
f=0:fs/FS:(FS-1)*fs/FS;
%进行FFT变换
x=fft(a);
figure(1)
plot(f,abs(x));title('原始信号a的fft图');
axis([0 45000 0 1000]);
xlabel('f');
ylabel('abs(x)');
grid on;
%设置FIR滤波器
format long
fedge=input('Band edges in Hz=');
mval=input('Desired magnitude values in each band=');
dev=input('Desired ripple in each band=');
FT=input('Sampling frequency in Hz=');
[N,fpts,mag,wt]=remezord(fedge,mval,dev,FT);
b=remez(N,fpts,mag,wt);
disp('FIR Filter Coefficients');
disp(b)
[h,w]=freqz(b,1,256);
figure(2)
subplot(2,1,1);
plot(w/pi,20*log10(abs(h)));title('幅频特性'); %画出幅值
xlabel('\omega/\pi');
ylabel('Gain,dB');
grid on;
subplot(2,1,2)
pha=angle(h); %得到相位
plot(w/pi,pha);title('相频特性');
xlabel('\omega/\pi');
ylabel('phase(Rad)');
%原始语音信号图
ts=1/fs;
ta=(length(a)-1)/fs;
t=0:ts:ta;
figure(3)
subplot(3,1,1);
plot(t,a);title('原始信号a');
xlabel('t');
ylabel('a');
grid on;
%添加随机噪声
noise_mu = 0;
noise_var =0.005;
a0= randn(size(a)) .* sqrt(noise_var) + noise_mu;
a1=a+a0;
%在原始信号上加随机噪声的信号图
subplot(3,1,2);
plot(t,a1);title('在原始信号上加上噪声信号a1');
xlabel('t');
ylabel('a1');
grid on;
%求卷积
a11=conv(b,a1);
%经过滤波器后的信号图
M=(length(a11)-1)/fs;
m=0:ts:M;
subplot(3,1,3);
plot(m,a11);title('经过滤波器后的信号a11');
xlabel('m');
ylabel('a11');
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -