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 + -
显示快捷键?