>> xlabel('ω/π');ylabel('幅度(dB)');title('切比雪夫 II 型幅频响应');
切比雪夫 II 型幅频响应1.41.21幅度(dB)0.80.60.40.2000.10.20.30.40.5ω/π0.60.70.80.91
2. 用计算机麦克录自己的语音信号,语音信号采样频率为22050,用matlab完成下列分析:
1)播放语音信号;对信号做1024点FFT变换;做原始语音信号的时域图形;做原始语音信号的FFT频谱图。
答:matlab代码如下:
>> fs = 22050;
>> I = audioread('C:\\Users\\Desktop\\1.wma'); >> sound(I,44100) %播放语音信号
>> y = fft(I,1024); %对信号做1024点FFT变换 >> plot(I);
>> title('刘珊原始语音信号波形图'); >> xlabel('时间');ylabel('幅值'); >> y1=fft(I,1024); >> f=fs*(0:511)/1024; >> plot(abs(y1(1:512)))
>> title('原始语音信号FFT频谱');
刘珊原始语音信号波形图10.80.60.40.2幅值0-0.2-0.4-0.6-0.8-100.511.5时间22.533.5x 105
1.2x 10-3刘珊原始语音信号FFT频谱10.80.60.40.200100200300400500600
2)在语音信号中加入随机噪声;播放加噪声后的语音信号,绘制加噪后的语音信号; 答:
>> fs=22050;
>> [I,fs] = audioread('C:\\Users\\Desktop\\1.wma'); >> noise = 0.1*randn(length(I),2); >> Si=I+noise;%加入噪音信号
>> sound(Si,fs);%播放加噪后语音信号 >> plot(Si);
>> title('刘珊加噪语音信号的时域波形'); >> y = fft(I,1024);
>> f = fs*(0:511)/1024; >> plot(abs(I(1:512)))
>> title('刘珊加噪语音信号的FFT频谱');
4.543.532.521.510.500x 10-5刘珊加噪语音信号的FFT频谱100200300400500600
4.543.532.521.510.5x 10-5刘珊加噪语音信号的FFT频谱00100200300400500600
3)设计合适的数字滤波器,将上述加噪声滤掉;播放滤波后的信号;绘制滤波前和滤波后的语音信号及频谱图。
答:
>> fs=22050;
>> [I, fs] = audioread('C:\\Users\\Desktop\\1.wma'); >> noise = 0.1*randn(length(I),2); >> Si=I+noise;%加噪后信号
>> wp=0.25*pi; ws=0.3*pi; Rp=1; Rs=15; Ts=1/fs; >> wp1=2/Ts*tan(wp/2); ws1=2/Ts*tan(ws/2); >> [N,Wn] = buttord (wp1,ws1,Rp,Rs,'s'); >> [Z,P,K] = buttap(N); >> [Bap,Aap]=zp2tf(Z,P,K); >> [b,a]=lp2lp(Bap,Aap,Wn); >> [bz,az]=bilinear(b,a,fs); >> [H,W]=freqz(bz,az);
>> plot(W*fs/(2*pi),abs(H)) ;
>> xlabel('频率/Hz') ;ylabel('频率响应幅度'); title('Butterworth') ; >> f1=filter(bz,az,Si); %滤波后信号 >> figure(2); >> subplot(2,1,1)
>> plot(Si) ;title('滤波前的时域波形'); xlabel('频率/Hz'); ylabel('幅值'); >> subplot(2,1,2)
>> plot(f1); title('滤波后的时域波形'); xlabel('频率/Hz'); ylabel('幅值');
>> sound(f1,22050);%播放滤波后信号 >> F0=fft(f1,1024); f=fs*(0:511)/1024; >> figure(2);
>> y2=fft(Si,1024); >> subplot(2,1,1);
>> plot(f,abs(y2(1:512))); title('滤波前的频谱') ;xlabel('频率/Hz'); ylabel('幅值'); >> subplot(2,1,2);
>> plot(f,abs(F0(1:512))); title('滤波后的频谱'); xlabel('频率/Hz'); ylabel('幅值');
滤波前的时域波形21幅值0-1-200.511.52频率/Hz滤波后的时域波形10.52.533.5x 105幅值0-0.5-100.511.52频率/Hz2.533.5x 105