ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【20211217】【信号处理】从 Matlab 仿真角度理解栅栏效应

2021-12-17 19:33:18  阅读:372  来源: 互联网

标签:栅栏 信号 信号处理 FFT Matlab 频率 20211217 分辨率 numfft


一、定义

        栅栏效应是指离散傅里叶变换(DFT)计算的频谱被限制在基频的整数倍处,只能在相应的离散点处看到输出,而丢失了其他频率成分的信息的现象。(就好像透过一道栅栏看风景,只能看到透过栅栏缝隙的景色一样~)

         (参考:栅栏效应 (数字信号处理术语)

二、产生原因

        栅栏效应的本质就是频率分辨率不够,导致部分频率信息丢失,而丢失的这些频率信息很有可能就是重要的或具有重要特征的成分,所以可能会对信号处理的结果产生很大的影响。

        (参考:信号降低栅栏效应

        (参考:栅栏效应

三、如何解决栅栏效应?

1. 增加频域抽样点数 N(即 FFT 点数);

2. 时域信号延拓,增加数据点数。        

        感性上理解:周期延拓相当于 ”加强“ 了信号,所以 FFT 结果会得到优化。

        注意:时域补零,相当于频域上内插,内插的效果只是让谱线更平滑,但不能增加频率分辨率!频域分辨率 F=fs/N=1/(N*Ts)=1/T,也就是说,频率分辨率为信号累积时间 T 的倒数,所以补零并不改变频率分辨率!

        (参考:傅里叶变换学习笔记(二)——栅栏效应、频谱泄漏与加窗

        (参考:FFT造成的频谱混叠,栅栏效应,频谱泄露,谱间干扰

        (参考:信号降低栅栏效应

         (参考:补零与离散傅里叶变换的分辨率

四、举个栗子~

        现对一个由两个单频信号相加得到的合成信号进行频域分析,单频信号的频率分别为 6Hz 和 5Hz,时域的采样频率为 100Hz,下面是求 FFT 的 Matlab 代码:

        频率分辨率 F = fs / N,其中fs 为采样频率,N 为 FFT 点数。也就是说,DFT 的频率分辨率不仅与采样频率有关,也与 FFT点数有关!

        (参考:补零与离散傅里叶变换的分辨率

%% 栅栏效应
clear; clc; close all; warning off;

%% 参数设置
fs = 100;  % 采样频率(满足奈奎斯特采样定理:要大于信号最大频率的两倍!!!)
L = 10;  % 时间长度
t = 0 : 1/fs : L;  % 时间坐标

%% 生成信号
f1 = 6;  % 信号1频率
f2 = 5;  % 信号2频率
s1 = 10 * sin(2 * pi * f1 * t);
s2 = 10 * sin(2 * pi * f2 * t);
s = s1 + s2;  % 合成信号

%% FFT
numfft = 128;  % FFT点数
s_fft = fft(s, numfft);  
p = pow2db(abs(s_fft(1:numfft/2)) .^ 2);  % 功率(只取正频部分)
f = (0 : numfft/2-1) / numfft * fs;  % 频率(只取正频部分)
magnitude = abs(s_fft(1:numfft/2)) ./ numfft;  % 幅度谱
phase = angle(s_fft(1:numfft/2));  % 相位谱

%% 作图
figure(1);
subplot(3, 1, 1);
plot(f, p, 'linewidth', 1.5); axis('tight'); title([num2str(numfft), '点傅里叶变换']);
subplot(3, 1, 2);
plot(f, magnitude, 'linewidth', 1.5); axis('tight'); title('幅度谱');
subplot(3, 1, 3);
plot(f, phase, 'linewidth', 1.5); axis('tight'); title('相位谱');

(1)128 点 FFT 的运行结果

 (2)256 点 FFT 的运行结果

 (3)512 点 FFT 的运行结果

(4)64 点 FFT 的运行结果 

 (5)32 点 FFT 的运行结果

 (6)16 点 FFT 的运行结果

        从上图可以看出,FFT 点数越高,频率分辨率越高,就越能分辨出不同的频率成分能量尖峰,5Hz 和 6Hz 的两个信号频率只相差 1Hz,对于 64 点的傅里叶变换,频率分辨率为 F=fs/N=100/64≈1.56,显然,这样的频率分辨率不足以分辨出这两种不同的频率成分~

        (参考:FFT中的栅栏效应) 

标签:栅栏,信号,信号处理,FFT,Matlab,频率,20211217,分辨率,numfft
来源: https://blog.csdn.net/weixin_40583722/article/details/122002705

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有