利用matlab对音频做FFT进行频谱分析

利用matlab对音频的左右声道做频谱分析。

syms y fs;

syms in_put;
in_put= 'C:\Users\getao\Desktop\立体声.wav'

%in_put 为音频文件所在的位置,.wav文件为文件的名称。


[y,fs] = audioread(in_put);

info=audioinfo(in_put)  ;
sound(y,fs);
T=1/fs; 
t=(0:length(y)-1)*T;
f=(0:length(y)-1)*fs/length(y);
figure(1);
yz=y(:,1);

     %提取音频信号的左声道数据
subplot(2,2,1);
plot(t,yz);
title('原始信号时域(左声道)');
xlabel('时间');
ylabel('振幅');

yz2=y(:,2);

   %提取音频信号的右声道数据
subplot(2,2,2);
plot(t,yz2);
title('原始信号时域(右声道)');
xlabel('时间');
ylabel('振幅');

subplot(2,2,3);
n=length(yz);
y1=fft(yz,n); 
F=fs/length(yz);

plot(f,abs(y1));
title('原始信号频谱(左声道)');
xlabel('F(Hz)');
ylabel('H(jw)');


subplot(2,2,4);
n2=length(yz2);
y1=fft(yz2,n2); 
F=fs/length(yz2);

plot(f,abs(y1));
title('原始信号频谱(右声道)');
xlabel('F(Hz)');
ylabel('H(jw)');

syms y fs;

syms in_put;
in_put= 'C:\Users\getao\Desktop\右声道.wav';


[y,fs] = audioread(in_put);

info=audioinfo(in_put)  ;
sound(y,fs);
T=1/fs; 
t=(0:length(y)-1)*T;
f=(0:length(y)-1)*fs/length(y);
figure(1);
yz=y(:,1);
subplot(2,2,1);
plot(t,yz);
title('原始信号时域(左声道)');
xlabel('时间');
ylabel('振幅');

yz2=y(:,2);
subplot(2,2,2);
plot(t,yz2);
title('原始信号时域(右声道)');
xlabel('时间');
ylabel('振幅');



subplot(2,2,3);
n=length(yz);
y1=fft(yz,n); 
F=fs/length(yz);

plot(f,abs(y1));
title('原始信号频谱(左声道)');
xlabel('F(Hz)');
ylabel('H(jw)');


subplot(2,2,4);
n2=length(yz2);
y1=fft(yz2,n2); 
F=fs/length(yz2);

plot(f,abs(y1));
title('原始信号频谱(右声道)');
xlabel('F(Hz)');
ylabel('H(jw)');

        下图分别为三段音频的分析,三段音频文件对同一首音乐的某一段进行录音得到。立体声左右声道都录制了声音,左右声道的文件则通过录音设备的两端进行分别录制。

立体声 音频分析 

左声道 音频分析 

右声道 音频分析 

 

从上图可以看出,该段声音的频率在0-10KHz范围内,在未录制声音的音道有杂音的干扰使其频谱有尖峰的存在。

 

  • 22
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
频谱分析是一种对信号进行频率分布分析的方法,它在信号处理和通信领域广泛应用。Matlab是一种功能强大的数据分析和处理工具,提供了丰富的函数和工具箱,可以方便地进行频谱分析。 要使用Matlab对一段数据进行频谱分析,首先需要将数据导入Matlab环境中。可以使用Matlab提供的各种函数和工具箱来读取和处理数据,如`load`函数、`importdata`函数、`xlsread`函数等。将数据导入后,可以使用Matlab中的函数对数据进行频谱分析Matlab提供了多种频谱分析方法,如快速傅里叶变换(FFT)、功率谱密度(PSD)估计、滤波器设计等。使用这些函数可以计算出信号在不同频率上的能量分布情况,进而得到信号的频谱。常用的函数包括`fft`函数、`pwelch`函数、`freqz`函数等。 在进行频谱分析之前,可能需要对数据进行预处理。可以对数据进行去噪、滤波、降采样等操作,以提升频谱分析的准确性和效果。Matlab提供了丰富的信号处理函数和工具箱,可以辅助完成这些操作,如`filter`函数、`wavefilt`函数等。 完成频谱分析后,可以通过调用Matlab中的绘图函数将结果可视化。可以绘制频谱图、功率谱图、滤波器响应图等,以便更直观地了解数据的频率特征。Matlab中的绘图函数有`plot`、`stem`、`spectrogram`等。 总之,使用Matlab进行频谱分析需要将数据导入、选择合适的频谱分析方法、进行数据预处理、计算频谱并进行结果可视化。Matlab提供了丰富的函数和工具箱,可以帮助完成这些操作,使频谱分析更加便捷和高效。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值