首页 > 其他 > 详细

matlab解析出声音文件的频率

时间:2015-04-15 11:06:24      阅读:386      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!