%五点滑动平均法平滑处理
clear
clc
close all hidden
%fni=input('五点滑动平均法平滑处理-输入数据文件名','s');
%fid=fopen(fni,'r')
%sf=fscanf(fid,'%f',1); %读入采样频率值
%m=fscanf(fid,'%d',1); %读入平滑次数
%fno=fscanf(fid,'%d',1); %读入输出数据文件名
%x=fscanf(fid,'%f',inf); %读入时程数据存成列向量
sf=200;m=100;fno='out4_2.mat';
load y
x=y';
%%Fs=100;
%t=0:1/Fs:14;
%x1=sin(2*pi*t+0.5*cos(0.5*pi*t))+2*exp(-0.2*t).*cos((0.7*pi*t))+0.02*t.^2;
%x2=exp(-0.2*t).*randn(1,length(t));
%%x=x1+x2;
%n=500;
%t=(0:1/sf:(n-1)/sf);
%x=sin(10*pi*t)+1.5*cos(15*pi*t)+exp(-0.3*t).*randn(1,n);
%status=fclose(fid);
n=length(x);
t=(0:1/sf:(n-1)/sf)';
a=x;
for k=1:m
b(1)=(3*a(1)+2*a(2)+a(3)-a(4))/5;
b(2)=(4*a(1)+3*a(2)+2*a(3)+a(4))/10;
for j=3:n-2
b(j)=(a(j-2)+a(j-1)+a(j)+a(j+1)+a(j+2))/5;
end
b(n-1)=(a(n-3)+2*a(n-2)+3*a(n-1)+4*a(n))/10;
b(n)=(-a(n-3)+a(n-2)+2*a(n-1)+3*a(n))/5;
a=b;
end
y=a;
figure(1)
subplot(2,1,1);
plot(t,x);
xlabel('时间(s)');
ylabel('加速度(g)');
grid on;
subplot(2,1,2);
plot(t,y);
xlabel('时间(s)');
ylabel('加速度(g)');
grid on;
fid=fopen(fno,'w');
for k=1:n
fprintf(fid,'%f%f\n',t(k),y(k));
end
status=fclose(fid);
- 1
- 2
前往页