📄 waveletfunc0.m
字号:
%%%采样点1000MS测转速程序
clear all;
close all;
rotatespeed=zeros(6,5);
load 005.dat;
for j=1:2;
m=j*12000;
x=X005(1:m);
s=x(11:12000-10);
figure(1);
subplot(13,1,1);
plot(s,'b');
title('原始信号数据和各层近似');
xlabel('时间(ms)');
ylabel('激光CCD读数');
[c,l]=wavedec(s,12,'db3');
for i=1:12
decom=wrcoef('a',c,l,'db3',i);
subplot(13,1,i+1);
plot(decom);
ylabel(['a',num2str(i)]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
stepangle=3.1415926/6000;
data=decom;
delti=zeros(1,12000-20);
cacuyuanxinadata=zeros(1,12000-20);
cacuyuanxinbdata=zeros(1,12000-20);
for inum=1:12000-20
delti(inum)=data(inum)-data(1);
end
deltR=sum(delti)/(12000-20);
for inum=1:12000-20
cacuyuanxinadata(inum)=delti(inum)*cos(inum*stepangle);
end
for inum=1:12000-20
cacuyuanxinbdata(inum)=delti(inum)*sin(inum*stepangle);
end
yuanxina=sum(cacuyuanxinadata)/5990;%最小二乘法求得的圆度公式里面的系数a
yuanxinb=sum(cacuyuanxinbdata)/5990;%最小二乘法求得的圆度公式里面的系数b
kersaii=zeros(1,12000-20);
for inum=1:12000-20
kersaii(inum)=data(inum)-deltR-yuanxina*cos(inum*stepangle)-yuanxinb*sin(inum*stepangle);
end
[maxkersaii maxindex]=max(kersaii);
[minkersaii minindex]=min(kersaii);
maxcita=maxindex*stepangle;
mincita=minindex*stepangle;
yuandu=maxkersaii-minkersaii
%%%%%%%%%%%%%%%%%%下面进行fft求取该层的分解获得的频率
ffts=fft(decom);
absffts=abs(ffts);
N = length(ffts);
ffts(1) = [];
power = abs(ffts(1:N/2)).^2;
nyquist = 1/2;
freq = (1:N/2)/(N/2)*nyquist;
period = 1./freq;
[mp,index] = max(power);
t=period(index);
n_zhuansu=60*1000/t
rotatespeed(j,i)=n_zhuansu;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -