impulse 发表于 2013-2-5 11:14

COT算法中的降采样过程中带来的频率混叠演示

本帖最后由 impulse 于 2013-2-5 11:29 编辑

COT由于最初的同步采样过程中采样频率很高,因此在最后一个环节抗混叠滤波和信号抽取(即降采样)中,如果没有使用低通滤波,并且原始信号中存在大于降采样频率二分之一的频率成分,就会产生混叠现象。以下为演示代码
%演示COT算法中的降采样过程中带来的频率混叠。
%代码很简单,信号是定频率的,实际COT过程远比这个复杂,因为频率是变化的。
%原始信号中包含一个有用信号(64Hz)以及一个干扰频率信号(300Hz),由于COT的第一步要求以非常高的采%样频率进行同步采样,比如代码中的sf=4096Hz,这个干扰信号被采集进来,而在COT最后一步的将采样过程中%,如代码中的sf1=512Hz即8倍抽取,如果不使用低通滤波器(抗混),就会产生频率混叠现象(出现了217Hz频%率成分)。


clc
clear
f=64;         %有用信号频率
f1=300;         %干扰信号频率
sf=4096;      %原始采用频率   
Ls=4096*4;      %原本个数

t=0:1/sf:(Ls-1)/sf;
x=sin(2*pi*f*t) + 0.25*sin(2*pi*f1*t+pi/3);

y=2*abs(fft(x))/Ls;
fx=0:sf/Ls:(Ls-1)*sf/Ls;

figure(1)
subplot(211)
plot(t,x)
xlabel('时间:s')
ylabel('速度;mm/s')
title('原始信号')
subplot(212)
L=Ls/4;
plot(fx(1:L),y(1:L))
xlabel('频谱:Hz')
ylabel('速度;mm/s')
title('原始信号频谱')

sf1=512;                %降采样频率
D=sf/sf1;               %信号抽取倍数
x1=downsample(x,D);   %信号抽取降采样,未加低通滤波器
Ls1=length(x1);
t1=0:1/sf1:(Ls1-1)/sf1;
y1=2*abs(fft(x1))/Ls1;
fx1=0:sf1/Ls1:(Ls1-1)*sf1/Ls1;

figure(2)
L1=Ls1/2;
subplot(211)
plot(t1,x1)
xlabel('时间:s')
ylabel('速度;mm/s')
title('降采样信号(未加低通滤波)')

subplot(212)
plot(fx1(1:L1),y1(1:L1))
xlabel('频谱:Hz')
ylabel('速度;mm/s')
title('降采样信号频谱(发生了频率混叠)')

x2=decimate(x,D);       %信号抽取降采样,采用8阶Chebyshev低通滤波器
figure(3)
y2=2*abs(fft(x2))/Ls1;
subplot(211)
plot(t1,x2)
xlabel('时间:s')
ylabel('速度;mm/s')
title('降采样信号(加了低通滤波)')

subplot(212)
plot(fx1(1:L1),y2(1:L1))
xlabel('频谱:Hz')
ylabel('速度;mm/s')
title('降采样信号频谱')1、原始信号和频谱

2、重采样信号和频谱(未加低通滤波,发生了频率混叠)

3、重采样信号和频谱(加了低通滤波,不发生频率混叠)



lv_arthur 发表于 2013-2-5 11:51

LZ您好,信号处理方便我知之甚少;有2个问题想向您请教下,1有没有可能我们过采样时选择相对低些的频率尽可能避免引入噪声 2 降采样后低通滤波器的选择依据,该低到多少呢?

impulse 发表于 2013-2-5 11:54

本帖最后由 impulse 于 2013-2-5 11:57 编辑

lv_arthur 发表于 2013-2-5 11:51 http://forum.chinavib.com/static/image/common/back.gif
LZ您好,信号处理方便我知之甚少;有2个问题想向您请教下,1有没有可能我们过采样时选择相对低些的频率尽可 ...

1、这个频率你自己是决定不了的,因为阶比跟踪你就得按转频的倍数去采样(阶比数*2),转速变了,你的重采样频率也要跟着变化
2、开始的过采样你如果频率太低,键相脉冲的处理精度就不够,直接导致你的重采样样本时间序列不准确,导致重采样信号相位出现误差。

lv_arthur 发表于 2013-2-5 12:21

impulse 发表于 2013-2-5 11:54 static/image/common/back.gif
1、这个频率你自己是决定不了的,因为阶比跟踪你就得按转频的倍数去采样(阶比数*2),转速变了,你的重 ...

谢谢 低通滤波器的选择是否要相对于转速进行调整?

impulse 发表于 2013-2-5 12:22

lv_arthur 发表于 2013-2-5 12:21 static/image/common/back.gif
谢谢 低通滤波器的选择是否要相对于转速进行调整?

是的,因为重采样频率根据转速调整。

magicsong2008 发表于 2013-2-5 14:35

impulse 发表于 2013-2-5 12:22 static/image/common/back.gif
是的,因为重采样频率根据转速调整。
请问lz,重采样之前的低通滤波器截止频率是如何设定的。
我的想法是:设定为重采样频率的1/2,重采样频率=键相脉冲频率*N(N为每周期重采样数),键相脉冲频率即为转速频率。
所以实际的低通截止频率跟由转速频率决定,但转速是变化的,那滤波频率要实时调整吗?
另外还想问下lz,重采样中,每周采的点数怎么决定,有什么说法没?非常感谢!!

impulse 发表于 2013-2-5 14:41

本帖最后由 impulse 于 2013-2-5 14:45 编辑

magicsong2008 发表于 2013-2-5 14:35 http://forum.chinavib.com/static/image/common/back.gif
请问lz,重采样之前的低通滤波器截止频率是如何设定的。
我的想法是:设定为重采样频率的1/2,重采样频率 ...

是的,滤波器频率要实时调整,每周采样点数根据你需要的倍频数决定,如果你想得到最大64倍频的频谱,也即阶比数为64,那么你每周就得采集128个点。

magicsong2008 发表于 2013-2-5 14:50

impulse 发表于 2013-2-5 14:41 static/image/common/back.gif
是的,滤波器频率要实时调整,每周采样点数根据你需要的倍频数决定,如果你想得到最大64倍频的频谱,也 ...

可是有个问题,低通滤波频率是对一组数据而言的,而转速是不断变化的。
比如说,我采1024个点,这组数据统一设定一个滤波频率,可是这1024点内,转速是不均匀的。

impulse 发表于 2013-2-5 14:55

magicsong2008 发表于 2013-2-5 14:50 http://forum.chinavib.com/static/image/common/back.gif
可是有个问题,低通滤波频率是对一组数据而言的,而转速是不断变化的。
比如说,我采1024个点,这组数据 ...

这也就是NI的技术所在,即使一组数据里面转速时是变化的,它还是能够处理好。并且它只需要计算一组滤波器系数即可,系数是不随着转速变化而变。

magicsong2008 发表于 2013-2-5 14:58

impulse 发表于 2013-2-5 14:55 static/image/common/back.gif
这也就是NI的技术所在,即使一组数据里面转速时是变化的,它还是能够处理好。并且它只需要计算一组滤波 ...

受教了,请问lz是NI的工程师吗?

impulse 发表于 2013-2-5 15:00

magicsong2008 发表于 2013-2-5 14:58 static/image/common/back.gif
受教了,请问lz是NI的工程师吗?

不是,只不过是对COT有些兴趣,对NI的VI有一点小小的研究。

magicsong2008 发表于 2013-2-20 11:07

大侠,关于COT滤波还有个疑问请教。
对于变转速信号来说,转频是变化的,这就造成重采样频率(fs=2*阶比*转频)时刻变化。如果我用fs/2来滤波,那滤波器截止频率要实时调整,好像做不到。可否对每组采样数据设一个最低采样频率?如果可以,这个最低采样频率如何设?

impulse 发表于 2013-2-20 11:17

本帖最后由 impulse 于 2013-2-20 11:20 编辑

magicsong2008 发表于 2013-2-20 11:07 static/image/common/back.gif
大侠,关于COT滤波还有个疑问请教。
对于变转速信号来说,转频是变化的,这就造成重采样频率(fs=2*阶比*转 ...
重采样频率肯定要跟着变化,数值信号处理情况下是可以实现的,其实如果不要求实时处理,这个是很简单的,但是实时的话,处理起来就麻烦一些,国外很多商业软件做到了实时,我也做到了

magicsong2008 发表于 2013-2-20 13:03

impulse 发表于 2013-2-20 11:17 static/image/common/back.gif
重采样频率肯定要跟着变化,数值信号处理情况下是可以实现的,其实如果不要求实时处理,这个是很简单的, ...

如果不实时处理,比如采1024个点处理一次,那这组数据的滤波频率要怎么设呢?

impulse 发表于 2013-2-20 14:36

magicsong2008 发表于 2013-2-20 13:03 static/image/common/back.gif
如果不实时处理,比如采1024个点处理一次,那这组数据的滤波频率要怎么设呢?

根据信号基频确定,假如需要得到64倍频,那么就应该128倍插值,抗混叠滤波截止频率就是64*基频
页: [1] 2
查看完整版本: COT算法中的降采样过程中带来的频率混叠演示