lxy159357 发表于 2016-12-22 09:28

信号去噪的方法?

各位大神,有没有哪种算法可以比较好的去除加速度传感器采集信号后,积分到速度(或位移)时,低频段的滑雪坡效应啊?
现在做管道振动,Coco80自带软件里面是将低频段直接去掉。

sd 发表于 2016-12-23 09:21

你用什么软件啊

lxy159357 发表于 2017-1-6 14:41

sd 发表于 2016-12-23 09:21
你用什么软件啊

我想用matlab来做!
前面讲的那是仪器自带的软件

失心控 发表于 2017-1-9 09:34

有小波去噪还有加窗什么的

lxy159357 发表于 2017-1-9 19:56

失心控 发表于 2017-1-9 09:34
有小波去噪还有加窗什么的

能稍微详细点么?我这都是自学的
你说的这个能用于去除白噪音?

失心控 发表于 2017-1-10 08:56

lxy159357 发表于 2017-1-9 19:56
能稍微详细点么?我这都是自学的
你说的这个能用于去除白噪音?

这是小波去噪的程序 你可以作为参考
clear all;
clc;
load default.txt;%装载采集的信号
x= default;
lx=length(x);
t=';
                                                   %% 绘制监测所得信号%%
subplot(2,2,1);
plot(t,x);
title('原始信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
                        %% 用db1小波对原始信号进行3层分解并提取小波系数%%
=wavedec(x,3,'db1');      %sym8
ca3=appcoef(c,l,'db1',3);      %低频部分
cd3=detcoef(c,l,3);               %高频部分
cd2=detcoef(c,l,2);               %高频部分
cd1=detcoef(c,l,1);               %高频部分
                                           %% 对信号进行强制去噪处理并图示%%
cdd3=zeros(1,length(cd3));
cdd2=zeros(1,length(cd2));
cdd1=zeros(1,length(cd1));
c1=;
x1=waverec(c1,1,'db1');
subplot(2,2,2);
plot(x1);
title('强制去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
                                       %% 默认阈值对信号去噪并图示%%
%用ddencmp( )函数获得信号的默认阈值,使用wdencmp( )函数实现去噪过程
=ddencmp('den','wv',x);
x2=wdencmp('gbl',c,l,'db1',3,thr,sorh,keepapp);
subplot(2,2,3);
plot(x2);
title('默认阈值去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
                                 %% 给定的软阈值进行去噪处理并图示%%
cd1soft=wthresh(cd1,'x',1.465);      %经验给出软阈值数
cd2soft=wthresh(cd2,'x',1.823);      %经验给出软阈值数
cd3soft=wthresh(cd3,'x',2.768);      %经验给出软阈值数
c2=;
x3=waverec(c2,1,'db1');
subplot(2,2,4);
plot(x3);
title('给定软阈值去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)


lxy159357 发表于 2017-1-10 09:41

失心控 发表于 2017-1-10 08:56
这是小波去噪的程序 你可以作为参考

多谢,我试下!

lxy159357 发表于 2017-1-10 10:04

失心控 发表于 2017-1-10 08:56
这是小波去噪的程序 你可以作为参考

txt文档里面只需要振动数值的序列?

lxy159357 发表于 2017-1-10 10:29

lxy159357 发表于 2017-1-10 10:04
txt文档里面只需要振动数值的序列?

错误使用 horzcat
串联的矩阵的维度不一致。

出错 xiaoboquzao (line 25)
c1=;

这里ca3是不是应该转置?

lxy159357 发表于 2017-1-10 11:13

以下为修改后的程序,我运行过,没有问题了!多谢帮助
clear all;
clc;
load default.txt;%装载采集的信号
x= default;
lx=length(x);
t=';
%% 绘制监测所得信号
subplot(2,2,1);
plot(t,x);
title('原始信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
%% 用db1小波对原始信号进行3层分解并提取小波系数
=wavedec(x,3,'db1');%sym8
ca3=appcoef(c,l,'db1',3);%低频部分
cd3=detcoef(c,l,3);%高频部分
cd2=detcoef(c,l,2);%高频部分
cd1=detcoef(c,l,1);%高频部分
%% 对信号进行强制去噪处理并图示
cdd3=zeros(1,length(cd3));
cdd2=zeros(1,length(cd2));
cdd1=zeros(1,length(cd1));
c1=';
x1=waverec(c1,l,'db1');
subplot(2,2,2);
plot(x1);
title('强制去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
%% 默认阈值对信号去噪并图示
%用ddencmp( )函数获得信号的默认阈值,使用wdencmp( )函数实现去噪过程
=ddencmp('den','wv',x);
x2=wdencmp('gbl',c,l,'db1',3,thr,sorh,keepapp);
subplot(2,2,3);
plot(x2);
title('默认阈值去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
%% 给定的软阈值进行去噪处理并图示
cd1soft=wthresh(x,'s',1.465);%经验给出软阈值数
cd2soft=wthresh(x,'s',1.823); %经验给出软阈值数
cd3soft=wthresh(x,'s',2.768); %经验给出软阈值数
c2=';
x3=waverec(c2,l,'db1');
subplot(2,2,4);
plot(x3);
title('给定软阈值去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)

wanyeqing2003 发表于 2017-1-10 13:10

可以试试高通滤波器。

lxy159357 发表于 2017-1-10 16:36

wanyeqing2003 发表于 2017-1-10 13:10
可以试试高通滤波器。

高通滤波器的话就不需要我这样导出来处理了,仪器自带的程序有可以选择将低于2HZ的信号直接略掉的,就是为了避免滑雪坡效应!

wanyeqing2003 发表于 2017-1-10 19:43

lxy159357 发表于 2017-1-10 16:36
高通滤波器的话就不需要我这样导出来处理了,仪器自带的程序有可以选择将低于2HZ的信号直接略掉的,就是 ...

也可以用数字滤波处理。

失心控 发表于 2017-1-11 08:44

lxy159357 发表于 2017-1-10 11:13
以下为修改后的程序,我运行过,没有问题了!多谢帮助
clear all;
clc;


原来的程序在我这可以运行啊你改哪里了

lxy159357 发表于 2017-1-14 18:38

失心控 发表于 2017-1-11 08:44
原来的程序在我这可以运行啊你改哪里了

我不知道你的原始数据结构如何,我这里运行你的程序,不管是做成行数据或者列数据都不能运行,其中错误出现在c1和c2这两个变量,其结构中,行向量和列向量怎么能生成新的变量呢?
页: [1] 2
查看完整版本: 信号去噪的方法?