1、%l为抽取倍数,m为内插倍数,mp3为音频信号,%此程序实现音频信号的内插和抽取,并画出处理前后的信号时域、频域图像function myhomework(mp3,l,m) pyr,fs=audioread(mp3);pyr=pyr(:,1);a=fs %输出采样频率n=length(pyr);%画原信号时域图像%t=n/fs;x=0:1/fs:(t-1/fs);subplot(2,2,1);plot(x,pyr);xlabel(时间/秒);ylabel(幅度);title(原始信号时域图像);%原信号频谱图%halflenth=floor(n/2);f=fs*(0:halflenth)/n;
2、y=abs(fft(pyr,n);subplot(2,2,2);plot(f,y(1:halflenth+1);xlabel(频率/HZ);ylabel(幅度);title(原信号频域图像);%l倍抽取后频谱图%pyr_l=1:floor(n/l); %pyr_l为l倍抽取后的信号pyr_l(1:floor(n/l)=pyr(l.*(1:floor(n/l);audiowrite(三倍抽取l.wav,pyr_l,fs); %将抽取后的信号写入音乐文件n_l=length(pyr_l);halflenth=floor(n_l/2);f_l=fs*(0:halflenth)/n_l;y_l=abs
3、(fft(pyr_l,n_l); %傅里叶变换subplot(2,2,3);plot(f_l,y_l(1:halflenth+1);xlabel(频率/HZ);ylabel(幅度);title(三倍信号频域图像);%三倍内插后信号频谱%pyr_30=1:m*n; %pyr_30为m倍内插后的信号i=1;while i=m*n if mod(i,m)=0 pyr_30(i)=pyr(i/m); else pyr_30(i)=0; end i=i+1;endaudiowrite(三倍内插m.wav,pyr_30,fs); %将内插后的信号写入音乐文件n_30=length(pyr_30);halflenth=floor(n_30/2/m);f_30=fs*(0:halflenth)/n_30;y_30=abs(fft(pyr_30,n_30); %傅里叶变换subplot(2,2,4);plot(f_30,y_30(1:halflenth+1);xlabel(频率/HZ);ylabel(幅度);title(三倍内插信号频域图像);