频谱泄漏好像影响不是那么大?

本文详细讨论了在信号处理中如何通过满足采样频率和时间条件来避免频谱泄漏,以及不同采样策略对DFT和IDFT结果的影响。重点介绍了加窗技术如矩形窗、Hamming窗和Blackman窗在减少频谱泄漏中的作用。
摘要由CSDN通过智能技术生成

1、满足下面三个条件,不会产生泄漏

. 采样频率是信号频率的整数倍
. 截取时间包含了各信号分量周期的整数倍
. 不补零

以信号

x(t)=cos(2\pi *100*t)+sin(2\pi *50*t)+cos(2\pi *25*t)

为例,

这个信号当中包含频率为100Hz,50Hz和25Hz的三个分量,相应的周期为0.01s,0.02s和0.04s。

使用采样频率f_{s}=400Hz

采样时间0.16s

上述设置满足了不产生频谱泄漏的三个条件。

Matlab代码如下:

clf
clc
clear
N=64;
fs=400
T=0.16
N_sample=T*fs
ts=0:1/fs:(T-1/fs)
x=cos(2*pi*100*ts)+sin(2*pi*50*ts)+cos(2*pi*25*ts)
n=0:1/fs:((N_sample-1)/fs)
scatter(n,x,'k');hold on;
plot(n,x,'r');
clf
y1_dft=dft1(x,N)
n=0:fs/N:(fs-fs/N);
stem(n,abs(y1_dft));%do not use plot here

时域波形如下:

截取时间长度为信号x(t)的3个周期

DFT结果如下:

可以看出,没有产生频谱泄漏。

2、不满足这三个条件,将产生频谱泄漏

2.1 采样时间0.18秒,25Hz的分量采样4.5个周期。

clf
clc
clear
fs=400
T=0.18
N_sample=T*fs
N=N_sample
ts=0:1/fs:(T-1/fs)
x=cos(2*pi*100*ts)+sin(2*pi*50*ts)+cos(2*pi*25*ts)
n=0:1/fs:((N_sample-1)/fs)
scatter(n,x,'k');hold on;
plot(n,x,'r');
clf
y1_dft=dft1(x,N)
n=0:fs/N:(fs-fs/N);
stem(n,abs(y1_dft));%do not use plot here

由于25Hz的信号不是整周期采样,频谱泄漏很明显。

2.2 采样时间0.16秒,补充192个零采样点。

Matlab代码:

clf
clc
clear
N=256;
Ts_mul_32=2
y1=ones(1,N/8*Ts_mul_32)
fs=400
T=0.08*Ts_mul_32
N_sample=T*fs
ts=0:1/fs:(T-1/fs)
x=cos(2*pi*100*ts)+sin(2*pi*50*ts)+cos(2*pi*25*ts)
n=0:1/fs:((N_sample-1)/fs)
add_zero=zeros(1,N*(1-Ts_mul_32/8));
y1_rec      =[x.*y1 add_zero];
n=0:1/fs:((N-1)/fs)
scatter(n,y1_rec,'k');hold on
plot(n,y1_rec,'g'); hold on;
clf
y1_dft=dft1(y1_rec,N)
n=0:fs/N:(fs-fs/N);
stem(n,abs(y1_dft))

时序数据图形如下:

DFT结果如下:

补零之后,产生了明显的频谱泄露。

2.3 采样频率不是信号分量的整数倍。

采样频率修改为410,DFT结果如下:

3. 频谱泄漏对IDFT结果的影响

产生频谱泄漏后,DFT结果再进行IDFT,还会得到原信号吗?

3.1 对不产生频谱泄漏的DFT进行反变换

对第1章的产生的信号进行DFT和IDFT。

Matlab代码

clf
clc
clear
fs=410
T=0.16
N_sample=T*fs
N=N_sample;
ts=0:1/fs:(T-1/fs)
x=cos(2*pi*100*ts)+sin(2*pi*50*ts)+cos(2*pi*25*ts)
n=0:1/fs:((N_sample-1)/fs)
y1_dft=dft1(x,N)
n=0:fs/N:(fs-fs/N);
stem(n,abs(y1_dft));%do not use plot here
y1_idft=idft(y1_dft,N)/N
n=0:1/fs:((N_sample-1)/fs)
subplot(211)
scatter(n,x,'k');hold on;
plot(n,x,'r');
subplot(212)
scatter(n,y1_idft,'k');hold on;
plot(n,y1_idft,'r');
 

时域数据波形如下,上图为原始数据采样,下图为数据经过DFT和IDFT后结果,可以看出IDFT结果与原数据结果完成相同。

3.2 对产生频谱泄漏的DFT进行反变换

对2.2节产生的信号进行DFT和IDFT操作。

clf
clc
clear
N=256;
Ts_mul_32=2
y1=ones(1,N/8*Ts_mul_32)
fs=400
T=0.08*Ts_mul_32
N_sample=T*fs
ts=0:1/fs:(T-1/fs)
x=cos(2*pi*100*ts)+sin(2*pi*50*ts)+cos(2*pi*25*ts)
n=0:1/fs:((N_sample-1)/fs)
add_zero=zeros(1,N*(1-Ts_mul_32/8));
y1_rec      =[x.*y1 add_zero];
n=0:1/fs:((N-1)/fs)
scatter(n,y1_rec,'k');hold on
plot(n,y1_rec,'g'); hold on;
clf
y1_dft=dft1(y1_rec,N)
n=0:fs/N:(fs-fs/N);
stem(n,abs(y1_dft))
clf

y1_idft=idft(y1_dft,N)/N
n=0:1/fs:((N-1)/fs)
scatter(n,y1_rec,'k');hold on;
scatter(n,y1_idft);
clf
err=y1_rec-y1_idft
plot(n,abs(err))
 

将IDFT的结果和原始数据做差,误差很小。尽管有频谱泄漏,原始信号还是很好地恢复了。

频谱泄漏的影响对IDFT不是那么大(可能是信号成分相对小,信号比较简单),但是对频域信号的分析影响比较大。

以2.2节的第2个图为例,旁瓣的幅度已经比较大。如果信号中包含的有用信号分量也落在这个范围里面,有用信号的频谱将受到较大的干扰。

4. 时域加窗处理

没有不加窗的操作,自然的截取数据相当于加矩形窗。

加矩形窗后,数据块之间就会出现不连续。对这样的数据块进行DFT分析后,引入了频谱泄漏。为了避免不连续带来的频谱泄漏,就使用窗口函数来解决这个问题。窗口函数的共同特点是,确保信号在块的开头和结尾处为零或者几乎为零。加了窗之后,数据有了0的过渡,显得连续了。

加窗的过程中,时域当中的每个点都要乘以相应的窗口系数。加窗之后,时域信号在每个采样块的开头淡入,结尾淡出。

加矩形窗,hamming窗和blackman窗的代码如下:

clf
clc
clear
N=256;
Ts_mul_32=2
y1=ones(1,N/8*Ts_mul_32)
y2=hamming(N/8*Ts_mul_32);
y2=y2'
y3=blackman(N/8*Ts_mul_32);
y3=y3'
fs=400
T=0.08*Ts_mul_32
N_sample=T*fs
ts=0:1/fs:(T-1/fs)
x=cos(2*pi*100*ts)+sin(2*pi*50*ts)+cos(2*pi*25*ts)
n=0:1/fs:((N_sample-1)/fs)
scatter(n,x,'k');hold on
plot(n,x,'r'); 
clf
add_zero=zeros(1,N*(1-Ts_mul_32/8));
y_0         =[x add_zero];
y1_rec      =[x.*y1 add_zero];
y2_hamming  =[x.*y2 add_zero];
y3_blackman =[x.*y3 add_zero];
n=0:1/fs:((N-1)/fs)
scatter(n,y_0,'k');hold on
plot(n,y_0,'r'); hold on;
plot(n,y1_rec,'g'); hold on;
clf
y1_dft=dft1(y1_rec,N)
y2_dft=dft1(y2_hamming,N)
y3_dft=dft1(y3_blackman,N)
n=0:fs/N:(fs-fs/N);
subplot(311);
scatter(n,abs(y1_dft),'k');hold on
plot(n,abs(y1_dft))
subplot(312);
scatter(n,abs(y2_dft),'k');hold on
plot(n,abs(y2_dft))
subplot(313);
scatter(n,abs(y3_dft),'k');hold on
plot(n,abs(y3_dft))
clf
%plot time domian signal
y_original=y1_rec;
y1_idft=idft(y1_dft,N)/N
y2_idft=idft(y2_dft,N)/N
y3_idft=idft(y3_dft,N)/N
n=0:1/fs:((N-1)/fs)
scatter(n,y_original,'k');hold on
plot(n,y_original,'r'); hold on;
plot(n,y1_idft,'g'); hold on;
plot(n,y2_idft,'b'); hold on;
plot(n,y3_idft,'m'); 

DFT结果如下:

可以看出,加hamming窗和blackman窗有效减小了频谱当中的旁瓣。

  • 46
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值