此篇仅对单个源的处理进行详细介绍。当然首先我们需要划分窗口大小(numSamples),滑动窗口大小或者叫迭代窗口大小(numIterate),其次是上采样的倍数(numInterp),选择我们需要定位的频段范围(bandwidth),以及在投影成像平面上划分的像素大小(pix),最后是我们是否考虑在进行互相关卷积时,给互相关函数加窗口函数(windowing)。
Step1:学过信号处理的同学,或多或少都知道hamming window。简单的说明一下其功能:
降低频谱泄漏:在对时间序列信号进行频域转换(例如快速傅里叶变换)后,使用窗口函数可以降低频谱泄漏,即将相邻频率间的能量蔓延到其他频率的现象。
减少边缘效应:窗口函数也可以用来减少信号的边缘效应,例如抑制在时间序列信号转换为频域信号后出现的时间延迟效应。
提高信噪比:使用窗口函数可以提高信噪比,因为它们可以降低相邻频率间的干扰,从而使得更弱的信号更易被检测到。
总而言之,使用窗口函数可以改善频域信号的性能,这在多种应用场景(例如音频信号处理,通信系统等)中是非常重要的。因此我们先计算wt,对波形进行处理。从而使得每个窗口里面的波形首尾能够连接。
Wt_raise = 0.16 #for hamming, Wt_raise = 0.08
Wt = (1-cos( 2*pi*arange(S)/S ))*(1-Wt_raise)*.5+Wt_raise
Step2:计算角度分辨率,后期处理中用于判断该点是否为噪声点或者错误的点。
角度分辨率是指测量系统或设备能够分辨两个非常接近的物体或信号之间的最小夹角。一般来说,角度分辨率越高,表示系统或设备能够分辨更接近的物体或信号,也就是说能够更加精细地进行测量。
计算角度分辨率的公式如下:
角度分辨率 = 波长 / 天线阵列直径。
ares = 299.792458/bw[1]/arrDiam
其中波长可以通过光速除以最大的频率。阵列直径为最长的基线距离。
Step3:生成一个频段范围的数组,在这个数组里面,被使用的频段范围元素均为1,其他的频段为0。比如我们需要[20,80]。就将该频段设置为1。实现代码如下:
W = zeros(2*S)+1
freq = abs( fs*fft.fftfreq( 2*S ) )
W[ abs(freq) < bw[0] ] = 0
W[ abs(freq) > bw[1] ] = 0
Step4:计算电磁信号的频谱。但是在做fft之前,我们需要做一些预处理。
将数据的每一个元素减去整个元素的平均值。减去平均值是一种常见的预处理步骤。减去平均值的目的是为了消除信号中的直流分量,并使信号的平均值接近于零。直流分量是指信号中的直流成分,即频率为零的成分。直流分量通常是由信号中的常量或低频成分引起的,因此,它们可以被视为信号中的基线或背景。直流分量的存在可能会干扰信号中的高频成分,从而降低信号的质量和可分析性。然后再乘上窗口函数Wt,加窗主要是为了使时域信号似乎更好地满足FFT处理的周期性要求,减少泄漏。
d = (data[i,:] - mean(data[i,:]))*Wt
Step5:计算均方根(eRMS)和振幅(pkpk)。这些度量是滤波之后的计算值。
由于闪电信号的能量非常大,因此它们通常具有非常高的 RMS 值。在分析和处理闪电信号时,RMS 值可以用于比较不同信号之间的能量强度,以及检测信号中的异常或异常强度的事件。例如,在闪电定位中,可以使用闪电信号的 RMS 值来确定闪电事件的强度,从而确定闪电的位置和性质。此外,闪电信号的 RMS 值还可以用于分析信号的频率特性和噪声特性,以及识别信号中的周期性成分等。
erms = (mean(arr**2))**.5
pkpk = arr.max() - arr.