声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 19303|回复: 41

[综合] 振动信号消除趋势项matlab程序

  [复制链接]
发表于 2007-7-3 14:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
%用最小二乘法消除振动信号的趋势项
clear;
clc;
fni=input('数据文件名:','s');
fid=fopen(fni,'r');
fs=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/fs:(n-1)/fs);
a=polyfit(t,x,m);     %计算多项式待定系数向量a
y=x-polyval(a,t);     %用x减去多项式系数a生成的趋势项
subplot(2,1,1);
plot(t,x);
title('original signal');
grid on;
subplot(2,1,2);
plot(t,y);
title('redifined signal');
grid on;
fno=input('输出数据的文件名:','s');
save(fno,'t','y');

[ 本帖最后由 zhlong 于 2007-8-7 15:24 编辑 ]

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2007-7-3 14:57 | 显示全部楼层

回复 #1 16443 的帖子

楼主给个实例看看效果如何.
 楼主| 发表于 2007-7-3 15:37 | 显示全部楼层
发表于 2007-7-3 16:28 | 显示全部楼层
楼主给的信号直接观察的话,趋势项不明显,根据楼主的程序,我换了一个信号试试!

clear;
fs=1000;    %fs为采样频率;
t=1/fs:1/fs:1;
x1=2*sin(100*pi*t);
subplot(411);plot(x1);
title('原始信号')
x2=3*sin(pi*t);
subplot(412);plot(x2);
title('趋势项')
x=x1+x2;
subplot(413);plot(x);
title('原始信号+趋势项')

m=2;
a=polyfit(t,x,m);     %计算多项式待定系数向量a
y=x-polyval(a,t);     %用x减去多项式系数a生成的趋势项
title('original signal');
grid on;
subplot(2,1,2);
subplot(414);plot(t,y);
title('去除趋势项后得到的信号')

[ 本帖最后由 zhlong 于 2007-7-3 16:53 编辑 ]
1.gif

点评

赞成: 4.0
赞成: 4
  发表于 2012-7-19 16:03

评分

1

查看全部评分

 楼主| 发表于 2007-7-3 17:19 | 显示全部楼层

回复 #4 zhlong 的帖子

你这样一处理就看起来特别明显了
发表于 2007-7-3 20:43 | 显示全部楼层

回复 #5 16443 的帖子

又多了一个消除趋势项的程序呀!:lol
发表于 2007-7-4 11:19 | 显示全部楼层
这个得顶一下:lol 保存了

[ 本帖最后由 zhlong 于 2007-7-4 11:35 编辑 ]
发表于 2007-7-6 18:01 | 显示全部楼层
向专家致敬、学习!
发表于 2007-7-20 08:25 | 显示全部楼层
基本上, 楼上两位专家所提供的程序,
在趋势项近似多项式, 且知道趋势项的阶数时, 的确是不错的方式;
但若趋势项不近似多项式, 或无法得到很近似的阶数时, 要如何? 我想是无法有效去除趋势项的
其实Matlab在求频谱时, 已经有detrend的过程了
适宜的使用 filter 函数亦可达到同样效果, 当然也要视原先目的而定

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2009-11-3 21:59 | 显示全部楼层
好像试过了,程序有些问题啊
发表于 2009-12-29 10:57 | 显示全部楼层

回复 9楼 ChaChing 的帖子

大侠你好,可不可以麻烦你几秒钟给我说一下工程上实用的对于振动信号的预处理方法(步骤)呢?谢谢:loveliness:
发表于 2009-12-29 20:59 | 显示全部楼层

回复 11楼 李元 的帖子

请勿指名回覆! 何况个人水平相较楼上诸位仅属有限!
预处理方法或步骤应该如何, 个人不确定, 仅说说个人平常工程上实用作法!
相关工程单位确认 -> 去除不合理数据(remove spike) -> 决定是否需去趋势项
其他待高人路过补充!
发表于 2010-4-30 09:11 | 显示全部楼层
好贴先留名再学习
发表于 2010-5-9 16:33 | 显示全部楼层

回复 1楼 Yooo 的帖子

为什么我用你的程序分析你的数据总出现
??? Error using ==> polyfit
X and Y vectors must be the same size.

Error in ==> Untitled2 at 13
a=polyfit(t,x,m);     %计算多项式待定系数向量a
发表于 2010-5-9 20:26 | 显示全部楼层

回复 14楼 marvelous111 的帖子

a=polyfit(t,x,m);中的t与x不等长! 检查下
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-21 07:24 , Processed in 0.123545 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表