信号内插matlab,声音信号的抽取和内插,MATLAB代码

声音信号抽取和内插的MATLAB程序

%%%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;

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;

while i<=m*n

if mod(i,m)==0

pyr_30(i)=pyr(i/m);

else

pyr_30(i)=0;

end

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值