MATLAB录制音频显示波形,并绘制其频谱

matlab通过调用电脑的录音机录一段音频,分析时域和频域

recObj = audiorecorder;
    %录音机对象,指定为 audiorecorder 对象。使用 audiorecorder 函数创建该对象。
    disp('Start speaking.')

recordblocking(recObj,5);
    disp('End of Recording.');
    %从麦克风录制20秒的音频片段

doubleArray = getaudiodata(recObj);
plot(doubleArray);
      %以 double 数组形式获取音频信号,并绘制数据。
title('Audio Signal (double)');

fs=length(doubleArray)/5;
    %做fft变换,绘制频谱图。
f=(0:length(doubleArray)-1)*fs/length(doubleArray);
y_fft=fft(doubleArray);
P_1 = abs(y_fft).^2/length(doubleArray);
plot(f,abs(P_1 ));
xlabel('Frequency (f)');
ylabel('|P(f)|^2');

Y_fft = fftshift(y_fft);
n=length(doubleArray);
      %通过shiftfft将零频分量移动到数组中心,重新排列傅里叶变换 。
fshift = (-n/2:n/2-1)*(fs/n); 
P_2 = abs(Y_fft ).^2/n;
plot(fshift,abs(P_2));
xlabel('Frequency (f)');
ylabel('|P(f)|^2');

recObj = audiorecorder;
 
disp('Start speaking.')

recordblocking(recObj,5);
disp('End of Recording.');
    

doubleArray = getaudiodata(recObj);
plot(doubleArray);

title('Audio Signal (double)');

fs=length(doubleArray)/5;
    
f=(0:length(doubleArray)-1)*fs/length(doubleArray);
y_fft=fft(doubleArray);
P_1 = abs(y_fft).^2/length(doubleArray);
plot(f,abs(P_1 ));
xlabel('Frequency (f)');
ylabel('|P(f)|^2');

Y_fft = fftshift(y_fft);
n=length(doubleArray);

fshift = (-n/2:n/2-1)*(fs/n); 
P_2 = abs(Y_fft ).^2/n;
plot(fshift,abs(P_2));
xlabel('Frequency (f)');
ylabel('|P(f)|^2');

  • 10
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值