赞
踩
以下是我学习编写的一个MATLAB关于三分之一倍频程处理的程序,但是我得到的结果跟我同事用flexpro得到的结果总是差上几倍,现在把他贴出来,请各位高手指教!!
%三分之一倍频程处理
%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
%%%%%%%%%%%%%%%%%%%%%%
fni=input('三分之一倍频程处理-输入数据文件名:','s');
fid=fopen(fni,'r');
sf = fscanf(fid,'%f',1); %采样频率
fno = fscanf(fid,'%s',1); %输出数据文件名
x = fscanf(fid,'%f',[1,inf]); %按行输入数据
status=fclose(fid);
%%定义三分之一倍频程的中心频率
f=[1.00 1.25 1.60 2.00 2.50 3.15 4.00 5.00 6.30 8.00];
fc=[f,10*f,100*f,1000*f,10000*f];
%中心频率与下线频率的比值
oc6=2^(1/6);
%%取中心频率总的长度
nc=length(fc);
%%%取输入数据的长度
n=length(x);
%%大于并最接近n的2的幂次方长度
nfft=2^nextpow2(n);
%%进行FFT变换
a=fft(x,nff
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。