fivepoints.m
来自「这里提供了两个消除趋势相的matlab程序 在故障诊断中 要对信号进行频谱分」· M 代码 · 共 41 行
M
41 行
%五点滑动平均法平滑处理
clear
close all hidden
%提示用键盘输入输入数据文件名
fni=input('五点滑动平均法平滑处理-输入数据文件名:','s');
fid=fopen(fni,'r'); %以只读方式打开数据文件
sf=fscanf(fid,'%f',1); %读入采样频率值
m=fscanf(fid,'%d',1); %读入平滑次数
fno=fscanf(fid,'%s',1); %读入输出数据文件名
x=fscanf(fid,'%f',inf); %读入时程数据存成列向量
status=fclose(fid); %关闭数据文件
n=length(x);
t=(0:1/sf:(n-1)/sf)';
%将x赋值给a
a=x;
%循环m次进行平滑处理计算
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
%将a赋值给y
y=a;
subplot(211),plot(t,x);grid on;
subplot(212),plot(t,y);grid on;
%打开文件输出平滑后的数据
fid=fopen(fno,'w');
for k=1:n
%每行写两个实型数据,t为时间,y为平滑后的数据
fprintf(fid,'%f%f\n',t(k),y(k));
end
status=fclose(fid);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?