Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-03-13, 18:25   #1
yijiangshan
初级会员
 
注册日期: 2008-03-13
年龄: 42
帖子: 1
声望力: 0
yijiangshan 正向着好的方向发展
默认 【求助】如何分析wav文件

通过读入录有拨电话号码的wav文件,用MATLAB语言编写程序,建立拨号信号的数学模型,应用傅里叶分析的方法,可以把电话号码恢复出来。
求各位大虾帮忙!!!!!!!!!!!:ft:
yijiangshan 当前离线   回复时引用此帖
旧 2008-03-18, 19:11   #2
foxstar
初级会员
 
注册日期: 2007-05-27
帖子: 18
声望力: 18
foxstar 正向着好的方向发展
默认

我用的是DTMF译码,不知道是否与你要求的一样.
function [telnum]=fft256_detDTMF(filename,dataN)
%**********************************************************************
%对波形文件进行256点FFT运算,并进行DTMF译码.
%telnum=fft256_detDTMF('telnum.wav',256);
%the result of telnum is:num
%取整函数:floor(向下取整) ceil (向上取整)
%参数:filename 波形文件名 dataN 数据长度
%*********************************************************************

N=256;
[wave,fs]=wavread(filename);
wav=[];
for k=1:dataN
wav=[wav wave(k)];
end
xf=fft(wav,N);
n=0:N-1;
stem(n*fs/N,abs(xf),'.');
xlabel(' fft frequency(Hz)','fontsize',12,'fontweight','bold');
axf=abs(xf);
max_f=pkpicker(axf,20,4); %求频率向量中最大幅度值
for n=1:length(axf)
if(axf(n)>=max_f(1)) k1=n;break;
end
end
for i=(k1+1):length(axf)
if(axf(i)>=max_f(2)) k2=i;break;
end
end
fl=floor(k1*fs/N); %求频率FL,FH
fh=floor(k2*fs/N);

if fl<=718
fl=718;
elseif fl<=812
fl=812;
elseif fl<=875
fl=875;
else
fl=968;
end
if fh<=1250
fh=1250;
elseif fh<=1375
fh=1375;
else
fh=1500;
end

switch fl %译码选择
case 718
hang=1;
case 812
hang=2;
case 875
hang=3;
case 968
hang=4;
otherwise
;
end
switch fh
case 1250
lie=1;
case 1375
lie=2;
case 1500
lie=3;
otherwise
;
end
switch hang
case 1
switch lie
case 1
num=1;
case 2
num=2;
case 3
num=3;
otherwise
;
end
case 2
switch lie
case 1
num=4;
case 2
num=5;
case 3
num=6;
otherwise
;
end
case 3
switch lie
case 1
num=7;
case 2
num=8;
case 3
num=9;
otherwise
;
end
case 4
switch lie
case 2
num=0;
otherwise
;
end
end
telnum=num;
foxstar 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 13:55


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.