声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2550|回复: 1

[其他相关] 三分之一倍频程分析

[复制链接]
发表于 2014-12-13 22:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
《matlab在振动信号处理中的应用》中关于三分之一倍频程的处理程序见下,对于红色部分有点不理解,请各位大神批评指导下。
对于上下限频率对应的序号nl和nu为何如此求解。后面的滤波的实现原因?麻烦请各位大神指点下,对于三分之一倍频程的认识还是不够。谢谢。相关附件我上传。

%三分之一倍频程处理
clear
clc
close all hidden
format long
%fni=input('三分之一倍频程处理-输入数据文件名','s');
%fid=fopen(fni,'r')
%sf=fscanf(fid,'%f',1);     %读入采样频率值
%fno=fscanf(fid,'%d',1);    %读入输出数据文件名
%x=fscanf(fid,'%f',[1 inf]); %读入输入数据存成列向量
%status=fclose(fid);
sf=500;fno='out6_4.mat';
load y
x=y;
%定义三分之一倍频程的中心频率
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);
nfft=2^nextpow2(n);
a=fft(x,nfft);
for j=1:nc
    fl=fc(j)/oc6;
    fu=fc(j)*oc6;
    nl=round(fl*nfft/sf+1);
    nu=round(fu*nfft/sf+1);
    if fu>sf/2
        m=j-1;break
    end
    b=zeros(1,nfft);
    b(nl:nu)=a(nl:nu);
    b(nfft-nu+1:nfft-nl+1)=a(nfft-nu+1:nfft-nl+1);
    c=ifft(b,nfft);
    yc(j)=sqrt(var(real(b(1:n))));
end

subplot(2,1,1);
t=0:1/sf:(n-1)/sf;
plot(t,x);
xlabel('时间(s)');
ylabel('加速度(g)');
grid on;
subplot(2,1,2);
plot(fc(1:m),yc(1:m));
xlabel('频率(Hz)');
ylabel('有效值');
grid on;
fid=fopen(fno,'w');
for k=1:m
   fprintf(fid,'%f%f\n',fc(k),yc(k));
end
status=fclose(fid);

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2015-1-4 11:41 | 显示全部楼层
相当于1/3倍频程的频带滤波器,并计算各频带有效值
” yc(j)=sqrt(var(real(b(1:n))))“里面的b(1:n)应改为c(1:n)才正确
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-24 14:29 , Processed in 0.066285 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表