ImageVerifierCode 换一换
格式:DOCX , 页数:112 ,大小:40.23KB ,
资源ID:7636908      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7636908.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab在振动信号处理中的应用代码.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab在振动信号处理中的应用代码.docx

1、matlab在振动信号处理中的应用代码程序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

2、);%读入时程数据存成列向量%关闭数据文件status=fclose(fid); %取信号数据长度 n=length(x); %建立离散时间列向量 t=(0:1/sf:(n-1)/sf); %计算趋势项的多项式待定系数向量aa=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的

3、时程曲线图形 plot(t,y); %在图幅上添加坐标网格grid on; %以写的方式打开文件或建立一个新文件 fid=fopen(fno,w); %进行n次循环将计算结果写到输出数据文件中 for k=1:n %每行输出两个实型数据,t为时间,y为消除趋势项后的结果 fprintf(fid,%f %fn,t(k),y(k); %循环体结束语句 end %关闭数据文件status=fclose(fid); 程序4-2%五点滑动平均法平滑处理%clearclcclose all hidden%fni=input(五点滑动平均法平滑处理-输入数据文件名:,s); fid=fopen(fni,r)

4、; 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

5、; 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赋值给yy=a;%将分成2行1列的图形窗口的第1列设为当前绘图区域subplot(2,1,1); %绘制平滑前的时程曲线图形plot(t,x); %添加横向坐标轴的标注xlabel(时间 (s); %添加纵向坐标轴的标注 ylabel(加速度(g); %在图幅上添加坐标网格grid on;

6、%将分成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 %fn,t(k),y(k); end status=fclose(fid); 程序4-2%五点滑动平均法平滑处理%clearclcclose all hidden

7、%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

8、*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赋值给yy=a;%将分成2行1列的图形窗口的第1列设为当前绘图区域subplot(2,1,1); %绘制平滑前的时程曲线图形plot(t,x); %添加横向坐标轴的标注xlabel(时间

9、 (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 %fn,t(k),y(k); end status=fc

10、lose(fid); 程序4-3%滑动平均法消除趋势项%clearclcclose all hidden%fni=input(滑动平均法消除趋势项-输入数据文件名:,s); fid=fopen(fni,r); sf = fscanf(fid,%f,1); %采样频率l = fscanf(fid,%d,1); %滑动阶次m = fscanf(fid,%d,1); %平滑次数fno = fscanf(fid,%s,1); %输出数据文件名x = fscanf(fid,%f,1,inf);%输入数据存成行向量status=fclose(fid);%取信号数据长度 n=length(x); %建立离散

11、时间列向量 t=(0:1/sf:(n-1)/sf); %生成一个元素全为1的行向量b=ones(1,l); %信号两端分别向外延伸l个数据 a=b*x(1),x,b*x(n); b=a;%按平滑次数循环进行滑动平均处理计算趋势项 for k=1:m for j=l+1:n-l b(j)=mean(a(j-l:j+l); end a=b;end%用输入信号x减去与平滑趋势项ay=x(1:n)-a(l+1:n+l); %同时绘制x对于t和y对于t的时程曲线 plot(t,x,:,t,y,t,a(l+1:n+l),-.);%添加横向坐标轴的标注xlabel(时间(s); %添加纵向坐标轴的标注 yl

12、abel(位移mm); %在图幅上添加图例legend(输入,输出,趋势); %在图幅上添加坐标网格grid on; %以写的方式打开文件或建立一个新文件fid=fopen(fno,w); %进行n次循环将结果写到输出数据文件中 for k=1:n %每行写两个实型数据,t为时间,y为消除趋势项后的结果 fprintf(fid,%f %fn,t(k),y(k); end status=fclose(fid); 程序4-4%五点三次法平滑处理(时域和频域)%clearclcclose all hidden%fni=input(五点三次平滑处理-输入数据文件名:,s); fid=fopen(fni

13、,r); sf = fscanf(fid,%f,1); %采样频率 it = fscanf(fid,%d,1); %数据类型(1时域,2频域)m = fscanf(fid,%d,1); %平滑次数 fno = fscanf(fid,%s,1); %输出数据文件名x = fscanf(fid,%f,it,inf);%输入数据存成行向量status=fclose(fid); %取信号数据长度 n=length(x(1,:); for l=1:it a=x(l,:);%循环m次进行平滑处理 for k=1:m b(1)=(69*a(1)+4*(a(2)+a(4)-6*a(3)-a(5)/70; b(

14、2)=(2*(a(1)+a(5)+27*a(2)+12*a(3)-8*a(4)/35; for j=3:n-2 b(j)=(-3*(a(j-2)+a(j+2)+12*(a(j-1)+a(j+1)+17*a(j)/35; end b(n-1)=(2*(a(n)+a(n-4)+27*a(n-1)+12*a(n-2)-8*a(n-3)/35; b(n)=(69*a(n)+4*(a(n-1)+a(n-3)-6*a(n-2)-a(n-4)/70; a=b; end y(l,:)=a;end%绘制平滑前后的曲线图形if it=1 %时域信号%建立离散时间向量 nn=1:2000; t=0:1/sf:(n-

15、1)/sf; %同时绘制x对于t和y对于t的时域曲线 plot(t(nn),x(nn),:,t(nn),y(nn); xlabel(时间 (s); %添加横向坐标轴的标注 ylabel(幅值); %添加纵向坐标轴的标注 legend(平滑前,平滑后);%在图幅上添加图例 grid on;else %频域信号%建立离散频率向量 nn=1:256; f=0:sf/n:(n-1)*sf/n;%同时绘制x的实部对于f和y的实部对于f的频域曲线 subplot(2,1,1); plot(f(nn),x(1,nn),:,f(nn),y(1,nn); xlabel(频率 (Hz); %添加横向坐标轴的标注

16、ylabel(实部); %添加纵向坐标轴的标注 legend(平滑前,平滑后);%在图幅上添加图例 grid on;%同时绘制x的虚部对于f和y的虚部对于f的频域曲线 subplot(2,1,2); plot(f(nn),x(2,nn),:,f(nn),y(2,nn); xlabel(频率 (Hz); %添加横向坐标轴的标注 ylabel(虚部); %添加纵向坐标轴的标注 legend(平滑前,平滑后);%在图幅上添加图例 grid on;end%打开文件输出平滑后的数据fid=fopen(fno,w); for k=1:n if it=1 %时域信号输出时间和幅值 fprintf(fid,%

17、f %fn,t(k),y(k); else %频域信号输出频率、实部和虚部 fprintf(fid,%f %f %fn,f(k),y(1,k),y(2,k); endend status=fclose(fid); 程序5-1%频域低通和带通滤波%clearclcclose all hidden%fni=input(频域带通滤波-输入数据文件名:,s); fid = fopen(fni,r); sf = fscanf(fid,%f,1); %采样频率fmin = fscanf(fid,%f,1); %最小截止频率fmax = fscanf(fid,%f,1); %最大截止频率sx = fscan

18、f(fid,%s,1); %读入横向坐标轴的标注 sy = fscanf(fid,%s,1); %读入纵向坐标轴的标注 fno = fscanf(fid,%s,1); %输出数据文件名x = fscanf(fid,%f,1,inf);%输入数据存成行向量status=fclose(fid);%取信号数据长度 n=length(x); %建立离散时间列向量 t=(0:1/sf:(n-1)/sf); %取大于并最接近n的2的幂次方为FFT长度nfft=2nextpow2(n); %四舍五入取整求最小截止频率对应数组元素的下标ni=round(fmin*nfft/sf+1); %四舍五入取整求最大截

19、止频率对应数组元素的下标na=round(fmax*nfft/sf+1); %进行FFT变换,结果存于yy=fft(x,nfft); %建立一个长度为nfft元素全为0的向量 a=zeros(1,nfft); %将y的正频率带通内的元素赋值给a a(ni:na)=y(ni:na); %将y的负频率带通内的元素赋值给aa(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1); %进行FFT逆变换,结果存于yy=ifft(a,nfft); %取逆变换的实部n个元素为滤波结果列向量y=(real(y(1:n); %绘制滤波前的时程曲线图形subplot(2,1,1)

20、; plot(t,x); %添加横向坐标轴的标注xlabel(sx); %添加纵向坐标轴的标注ylabel(sy); grid on; %绘制滤波后的时程曲线图形subplot(2,1,2); plot(t,y); %添加横向坐标轴的标注xlabel(sx); %添加纵向坐标轴的标注ylabel(sy); grid on;%打开文件输出滤波后的数据 fid=fopen(fno,w);for k=1:n fprintf(fid,%f %fn,t(k),y(k); end status=fclose(fid); 程序5-2%频域高通和带阻滤波%clearclcclose all hidden%fn

21、i=input(频域带阻滤波-输入数据文件名:,s); fid=fopen(fni,r); sf = fscanf(fid,%f,1); %采样频率fmin = fscanf(fid,%f,1); %最小截止频率fmax = fscanf(fid,%f,1); %最大截止频率sx = fscanf(fid,%s,1); %读入横向坐标轴的标注 sy = fscanf(fid,%s,1); %读入纵向坐标轴的标注 fno = fscanf(fid,%s,1); %输出数据文件名x = fscanf(fid,%f,1,inf);%输入数据存成行向量status=fclose(fid);%取信号数据

22、长度 n=length(x); %建立离散时间列向量 t=(0:1/sf:(n-1)/sf); %取大于并最接近n的2的幂次方为FFT长度nfft=2nextpow2(n); %四舍五入取整求最小截止频率对应数组元素的下标ni=round(fmin*nfft/sf+1); %四舍五入取整求最大截止频率对应数组元素的下标na=round(fmax*nfft/sf+1); %进行FFT变换,结果存于yy=fft(x,nfft); %建立一个长度为nfft元素全为0的向量 a=zeros(1,nfft); %将y的正频率带阻内的元素赋值为0y(ni:na)=a(ni:na); %将y的负频率带阻内的

23、元素赋值为0y(nfft-na+1:nfft-ni+1)=a(nfft-na+1:nfft-ni+1); %进行IFFT变换,结果存于aa=ifft(y,nfft); %取逆变换的实部n个元素为滤波结果列向量y=real(a(1:n);%绘制滤波前的时程曲线图形subplot(2,1,1);plot(t,x); %添加横向坐标轴的标注xlabel(sx); %添加纵向坐标轴的标注ylabel(sy); grid on;%绘制滤波后的时程曲线图形subplot(2,1,2); plot(t,y);%添加横向坐标轴的标注xlabel(sx); %添加纵向坐标轴的标注ylabel(sy); grid

24、 on; %打开文件输出滤波后的数据 fid=fopen(fno,w); for k=1:n fprintf(fid,%f %fn,t(k),y(k); end status=fclose(fid); 程序5-3%运用完全设计法的IIR滤波器滤波%clearclcclose all hidden%fni=input(运用完全设计法的IIR滤波器滤波-输入数据文件名:,s); fid=fopen(fni,r); fs = fscanf(fid,%f,1); %采样频率%滤波方式选择(1低通,2高通,3带通,4带阻)fun = fscanf(fid,%d,1); %滤波器选择(1巴特沃斯,2切比雪

25、夫,3切比雪夫,4椭圆)mod = fscanf(fid,%d,1); if fun=2 wp = fscanf(fid,%f,1);%通带截止频率(Hz) ws = fscanf(fid,%f,1);%阻带截止频率(Hz)else wp = fscanf(fid,%f,2);%通带截止频率(Hz) ws = fscanf(fid,%f,2);%阻带截止频率(Hz)endrp = fscanf(fid,%f,1); %通带波动系数(dB)rs = fscanf(fid,%f,1); %阻带衰减系数(dB)fno = fscanf(fid,%s,1); %输出数据文件名x = fscanf(fi

26、d,%f,1,inf);%输入数据存成行向量status=fclose(fid); %确定滤波方式switch fun case 1 %低通 ft=low; case 2 %高通 ft=high; case 3 %带通 ft=bandpass; case 4 %带阻 ft=stop; otherwise ft=low;end %根据滤波器种类进行IIR滤波器设计switch mod %巴特沃斯滤波器 case 1 n wn=buttord(wp/(fs/2),ws/(fs/2),rp,rs); b a= butter(n,wn,ft);%切比雪夫型滤波器 case 2 n wn=cheb1or

27、d(wp/(fs/2),ws/(fs/2),rp,rs); b a= cheby1(n,rp,wn,ft);%切比雪夫型滤波器 case 3 n wn=cheb2ord(wp/(fs/2),ws/(fs/2),rp,rs); b a= cheby2(n,rs,wn,ft);%椭圆滤波器 case 4 n wn=ellipbuttord(wp/(fs/2),ws/(fs/2),rp,rs); b a= ellip(n,rp,rs,wn,ft);end %计算滤波器的频率响应h w=freqz(b,a,1024,fs); m=length(x);t=0:1/fs:(m-1)/fs;%用设计出的滤波器进行滤波y=filter(b,a,x);%绘制滤波器的频率响应图subplot(2,1,1); plot(w,abs(h);%添加横向坐标轴的标注xlabel(频率 (Hz); %添加纵向坐标轴的标注ylabel(幅值); %在图幅上添加坐标网格 grid on; %绘制滤波前后

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1