%%%l为抽取倍数,m为内插倍数,mp3为音频信号,%%%此程序实现音频信号的内插和抽取,并画出处理前后的信号时域、频域图像functionmyhomework(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;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(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;whilei=m*nifmod(i,m)==0pyr_30(i)=pyr(i/m);elsepyr_30(i)=0;endi=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('三倍内插信号频域图像');