xmuszq 发表于 2010-6-20 10:00

重采样,大侠帮帮忙 看不懂~~

重采样,大侠帮帮忙 看不懂~~
这是一个用转速a1来对振动信号a2进行重采样的matlab程序,
重采样部分没看懂是啥意思
大侠帮帮指点指点




load F:\F\ss2.txt;
a1=ss2(:,1);
a2=ss2(:,2);
%=butter(8,1000/16384);
%a2=filter(b,a,a21);
k=zeros(1,40);
j=1;
for i=1:1:65535
   if a1(i)>-3 & a1(i+1)<-3
      k(j)=i;
      j=j+1;
   end   
end   
tim=zeros(1,j-2);
tim1=zeros(1,j-2);
% 获取每段脉冲长度
for i=1:1:j-2
   tim(i)=k(i+1)-k(i);
end   
% 重采样前滤波
%=butter(8,1500/16384);
%a21=filter(b,a,a2);
a21=a2;
%a21=a2;
kk=1024;
speed=1564.5/4;% 分析轴转速
data12=zeros(1,kk);


% 重采样
for mm=1:1:25
tim(mm)=round(tim(mm)*4009.3/4/speed);% 脉冲变换后每段长度
data1=a21(k(mm):(k(mm)+tim(mm)-1));%截取的原数据
k(mm+1)=k(mm)+tim(mm);
delta=1/32768*(tim(mm)/kk); %重采样后时间间隔
nn=tim(mm);

for i=1:1:kk
    shike=round(i*tim(mm)/kk);
    data11=0;
    for j=-5:1:5
      %yy=j;
%      canshu=pi*((i-1)*delta-(shike-1+j)/32768)/(1/32768);
      canshu=pi*((i)*delta-(shike+j)/32768)/(1/32768);
      
       if ((canshu==0))
          data11 =data11+a21(k(mm)+shike+j)*1;
       else
         %hh=sin(canshu)/canshu;
         data11 =data11+a21(k(mm)+shike+j)*sin(canshu)/canshu;
       end

    end
    data12(i)=data12(i)+data11;
end
end
data13=data12/mm; %重采样后平均
页: [1]
查看完整版本: 重采样,大侠帮帮忙 看不懂~~