一段10s立体声音频,采样率位8000Hz,已知频率为1000Hz

 1 clc;
 2 clear;
 3 [data, Fs] = audioread('1khz_stereo_8000.wav');
 4 fs=Fs;
 5 N=4000;
 6 n=2*fs:2*fs+N-1;     %从第2s结束开始取样
 7 f=(n-2*fs)*fs/N;     %数字频率转换成模拟频率 本来应该是n/N * fs,但由于n是从第三个周期开始的
 8 temp=data(:,1);      %取单个声道样本
 9 x=temp(n);
10 y=fft(x,N);  
11 mag=abs(y);          %求得Fourier变换后的振幅
12 plot(f,mag); 
13 [max,pos] = max(mag);%找到幅值最高点,记录所在横坐标
14 freq = f(pos);       %幅值最高对应基频分量
15 disp(freq);
16 grid on;

频谱图为

MATLAB使用fft求取给定音频信号的频率

 

相关文章:

  • 2021-11-27
  • 2021-08-16
  • 2022-01-02
  • 2021-07-01
  • 2021-07-11
  • 2021-08-04
  • 2021-08-13
猜你喜欢
  • 2022-12-23
  • 2021-06-06
  • 2022-01-09
  • 2022-01-14
  • 2021-05-23
  • 2021-12-07
相关资源
相似解决方案