王济-matlab在振动信号处理中的应用代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序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(n)=(-a(n-3)+a(n-2)+2*a(n-1)+3*a(n))/5;

a=b;

end

%将a赋值给y

y=a;

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

%绘制平滑前的时程曲线图形

plot(t,x);

%添加横向坐标轴的标注

xlabel('时间(s)');

%添加纵向坐标轴的标注

ylabel('加速度(g)');

%在图幅上添加坐标网格

grid on;

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

%绘制平滑后的时程曲线图形

plot(t,y);

%添加横向坐标轴的标注

xlabel('时间(s)');

%添加纵向坐标轴的标注

ylabel('加速度(g)');

%在图幅上添加坐标网格

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);

程序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;

相关文档
最新文档