您的位置:首页 > 编程语言 > MATLAB

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

2017-08-28 18:57 309 查看
一段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;


频谱图为

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: