matlab fni,MATLAB在振动信号处理中的应用_M文件

该程序分别展示了使用最小二乘法消除多项式趋势项和平滑处理的五点滑动平均法。通过读取输入数据文件,计算并输出处理后的结果到新的文件中。最小二乘法用于拟合数据趋势,五点滑动平均则用于平滑数据,减少噪声影响。这两个方法在信号处理和数据分析中广泛应用。
摘要由CSDN通过智能技术生成

程序4-1

%最小二乘法消除多项式趋势项

%%%%%%%%%%%%%%%%%%%%%%%%

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,'%s',1);%读入输出数据文件名

x = fscanf(fid,'%f',inf);%读入时程数据存成列向量

%关闭数据文件

status=fclose(fid);

%取信号数据长度

n=length(x);

%建立离散时间列向量

t=(0:1/sf:(n-1)/sf)';

%计算趋势项的多项式待定系数向量a

a=polyfit(t,x,m);

%用x减去多项式系数a生成的趋势项

y=x-polyval(a,t);

%将分成2行1列的图形窗口的第1列设为当前绘图区域

subplot(2,1,1);

%绘制x对于t的时程曲线图形

plot(t,x);

%在图幅上添加坐标网格

grid on;

%将分成2行1列的图形窗口的第2列设为当前绘图区域

subplot(2,1,2);

%绘制y对于t的时程曲线图形

plot(t,y);

%在图幅上添加坐标网格

grid on;

%以写的方式打开文件或建立一个新文件

fid=fopen(fno,'w');

%进行n次循环将计算结果写到输出数据文件中

for k=1:n

%每行输出两个实型数据,t为时间,y为消除趋势项后的结果

fprintf(fid,'%f %f\n',t(k),y(k));

%循环体结束语句

end

%关闭数据文件

status=fclose(fid);

程序4-2

%五点滑动平均法平滑处理

%%%%%%%%%%%%%%%%%%%%%%

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,'%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(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值