借matlab仿真说明频谱泄露

借matlab仿真说明频谱泄露

1.频谱泄露的原因

简单来说是因为对信号的截断。
信号为无限长的序列,对其实施处理实际上是截取了一段信号。 对于非周期信号,无论怎么截取都会产生频谱泄露对于周期信号,当截取的部分不是其周期长度的整数倍时会产生频谱泄露。

2.频谱泄露的后果

频谱泄露导致的后果:主瓣展宽,主谱线旁边会出现旁瓣。其根本都是频谱的能量被泄露到其他频点上。

3.matlab仿真说明频谱泄露

对单频的正弦信号进行采样,观察采样频率的变化对频谱图有何影响。

clear all;
close all;

f=1e3;%信号频率
k=4;
fs=k*f;%采样频率
N=1000;%信号长度/采样点数
caiyangzhouqishu=N/k;%看拼音,采样周期数
n=[0:1:N-1];
x=n/fs;%时域横坐标

y=sin(2*pi*f*x);
figure
plot(x,y);
y_fft=fftshift(fft(y,N));
x_f=[-N/2:1:N/2-1];
x_f=x_f/N*fs;%频域横坐标
figure
plot(x_f,abs(y_fft));%双边频谱图
title("信号原频谱");
figure
stem(x_f,abs(y_fft));%双边频谱图
title("信号原频谱");

此时采样周期数是250,也就是说完整截取了250个周期,此时不会发生频谱泄露,所得到的频谱是干净的谱线:
在这里插入图片描述
若是将上述代码的 k=4 改成 k=6 ,此时采样周期数的值为166.667,为非整数,说明此时截取的信号并非整周期,就会发生频谱泄露。
分别用plot和stem作出频谱图:
图一
图二
频谱不再是单纯的一根谱线,主谱线的峰值也降低。

4.频谱泄露的解决办法——加窗

为什么对于周期信号,当截取的部分不是其周期长度的整数倍时会产生频谱泄露?
用一种通俗的说法,当截取信号的是整数个周期时,将信号进行延拓,得到的结果就是原始信号。当截取信号是非整数周期时,将信号进行延拓的结果与原始信号不同,引入了新的频率。
在这里插入图片描述
加窗的目的是使截取处突变的部分尽可能平滑,减少新引入的频率分量,以此抑制频谱泄露(只是抑制,不是避免)。

5.matlab仿真——加窗处理

clear all;
close all;

f=1e3;%信号频率
k=6;
fs=k*f;%采样频率
N=1000;%信号长度/采样点数
caiyangzhouqishu=N/k;%看拼音,采样周期数
n=[0:1:N-1];
x=n/fs;%时域横坐标

y=sin(2*pi*f*x);
figure
plot(x,y);
y_fft=fftshift(fft(y,N));
x_f=[-N/2:1:N/2-1];
x_f=x_f/N*fs;%频域横坐标
figure
plot(x_f,abs(y_fft));%双边频谱图
title("信号原频谱");
figure
stem(x_f,abs(y_fft));%双边频谱图
title("信号原频谱");
%% window
win = hanning(N)';%以信号点数生成汉宁窗(需转置再相乘
figure
plot(x,win);
title("窗函数");
y_win = y.*win;
figure
plot(x,y_win);
y_win_fft=fftshift(fft(y_win,N));
figure
plot(x_f,abs(y_win_fft));
title("信号加窗后频谱");

figure
plot(x_f,abs(y_fft));
hold on;
plot(x_f,abs(y_win_fft),"-r");
xlim([900,1100]);
legend("信号原频谱","信号加窗频谱");
title("信号原频谱和信号加窗频谱");

如图是汉宁窗的时域效果:
在这里插入图片描述
加窗的方法有时域相乘或频域卷积,代码所用的是时域相乘的方法(即加权)。
将加窗前后频谱对比图放大:
在这里插入图片描述
只做定性分析,可以明显看出主谱线以外的频谱得到抑制。
同样可以看出加窗的缺陷:主峰降低即信号能量也减小(因为是对整个信号进行加窗)。

总结

对信号非整周期截取会导致频谱泄露,引起主瓣展宽,出现旁瓣。解决方法是对截取的信号加窗处理。


于 2023-02-16 第一次整理编写

学习时整理,不当之处烦请指正
码字不易,留个赞再走吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值