码迷,mamicode.com
首页 > 其他好文 > 详细

matlab解析出声音文件的频率

时间:2015-04-15 11:08:34      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

因为matlab工具集成了很多算法。记录学习了用matlab来解析声音频率。

ff.wav 是一段频率为17640HZ的已知声音文件

贴上代码:

 1 %1、%[X,Fs,Bit]=wavread(d:\\ff.wav);
 2 %2、然后进行特征提取
 3 %3、然后分类器识别
 4 %4、输出识别结果
 5 %close all;
 6 %clear all;
 7 [X,Fs]=audioread(d:\\ff.wav);
 8 N=2048;
 9 n=0:N-1;
10 Xk=fft(X,N); %对信号进行快速Fourier变换
11 nUniquePts = ceil((N+1)/2);
12 Xk = Xk(1:nUniquePts); % 选择前半部,因为后半部是前半部的一个镜像
13 magX=abs(Xk);%求得Fourier变换后的振幅
14 %作完傅氏变换后要加绝对值abs(Xk);dB值:20*log(abs(Xk)/max(abs(Xk)))。
15 ddd=20*log(magX/max(magX))
16 iPoint = -1 ;
17 for i=1:N
18     if magX(i) == max(magX)
19         iPoint = i;
20         i
21         break ;
22     end
23 end
24 % 创建频率数组begin
25 TXBB_THRESHOLD = 20 ;%误差范围
26 TXBB_CHARACTERS_NUM = 64 ;%假设一共64个频率
27 TXBB_BASEFREQUENCY_H = 17000; %起始频率
28 g_fFrequencies =  TXBB_CHARACTERS_NUM*(0:TXBB_CHARACTERS_NUM-1) + TXBB_BASEFREQUENCY_H;
29 % 创建频率数组end
30               
31 % 查找码表 begin
32 k = 1 ;
33 for i=1:TXBB_CHARACTERS_NUM
34     if g_fFrequencies(i)-20 < Fs/N*iPoint && g_fFrequencies(i)+20 > Fs/N*iPoint
35         k = i ;
36         break ;
37     end
38 end 
39 % 查找码表 end
40 
41 %打印结果
42 g_fFrequencies(k)
43 fprintf(k:%d.\n,k);
44 disp(k:.\n);

 

matlab解析出声音文件的频率

标签:

原文地址:http://www.cnblogs.com/LandAll/p/4427853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!