还在按部就班的算自相关?FFT让你体验飞一般的感觉!

您所在的位置:网站首页 matlab求互相关 还在按部就班的算自相关?FFT让你体验飞一般的感觉!

还在按部就班的算自相关?FFT让你体验飞一般的感觉!

2023-09-02 22:33| 来源: 网络整理| 查看: 265

本文同步发布在我的个人博客,希望大家可以到我的个人博客玩耍。http://www.weekreport.cn/archives/212

自相关函数

自相关(Autocorrelation),也叫序列相关,是一个信号于其自身在不同时间点的互相关。非正式地来说,它就是两次观察之间的相似度对它们之间的时间差的函数。它是找出重复模式(如被噪声掩盖的周期信号),或识别隐含在信号谐波频率中消失的基频的数学工具。它常用于信号处理中,用来分析函数或一系列值,如时域信号。–百度百科

自相关函数在随机信号处理领域非常重要,一般用下式计算一个随机信号的自相关。 R ( s , t ) = E [ X ( s ) x ( t ) ] R(s,t) = E[X(s)x(t)]\quad R(s,t)=E[X(s)x(t)] 如果该随机信号是均方遍历的,则可以使用一个足够长样本函数的时间自相关去估计真实的自相关函数。 在这里插入图片描述 如果m和N都比较大,上式运算量很大,如何减小运算量,实现自相关函数的快速计算?

使用 F F T FFT FFT算法实现自相关函数的快速计算

对时间自相关函数两边求傅立叶变换并整理得下式: 在这里插入图片描述 U n ( w ) U_n(w) Un​(w)是样本信号的傅立叶变换,上式说明 r ^ ( m ) \hat{r}(m) r^(m)和 u n ( n ) u_n(n) un​(n)的功率谱是一对傅里叶变换,既然是傅立叶变换,自然可以用 F F T FFT FFT算法实现快速计算。

算法步骤 对 u n ( n ) u_{n}\left ( n \right ) un​(n)补 N N N个0,得 u 2 n ( n ) u_{2n}\left ( n \right ) u2n​(n),对 u 2 n ( n ) u_{2n}\left ( n \right) u2n​(n)做快速傅立叶变换得 U 2 n ( k )   k = 0 , 1 , 2...2 N − 1 U_{2n}\left ( k \right )\quad\ k=0,1,2...2N-1 U2n​(k) k=0,1,2...2N−1。求 U 2 n ( k ) U_{2n}\left ( k \right ) U2n​(k)的幅度平方,然后除以 N N N,得到 1 N ∣ U 2 n ( k ) ∣ 2 \frac{1}{N}\left | U_{2n}\left ( k \right ) \right |^{2} N1​∣U2n​(k)∣2。对 1 N ∣ U 2 n ( k ) ∣ 2 \frac{1}{N}\left | U_{2n}\left ( k \right ) \right |^{2} N1​∣U2n​(k)∣2进行IFFT,得到 r 0 ^ ( m ) \hat{r_{0}}(m)\quad r0​^​(m) m = 0 , 1 , . . . , 2 N − 1 m=0,1,...,2N-1 m=0,1,...,2N−1, r 0 ^ ( m ) \hat{r_{0}}(m) r0​^​(m)与 r ^ ( m ) \hat{r}(m) r^(m)的关系为: r ^ ( m ) = { r 0 ^ ( m ) 0 ≤ m ≤ N − 1 r 0 ^ ( m + 2 N ) − N + 1 ≤ m ≤ − 1 \hat{r}\left ( m \right )= \left\{\begin{matrix} \hat{r_{0}}\left ( m \right )& 0\leq m\leq N-1 \\ \hat{r_{0}}\left ( m + 2N \right )& -N+1\leq m\leq -1 \end{matrix}\right. r^(m)={r0​^​(m)r0​^​(m+2N)​0≤m≤N−1−N+1≤m≤−1​ 使用 M a t l a b Matlab Matlab实现上述算法 仿真条件

随机信号 u ( n ) u\left ( n \right ) u(n)的观测样本由一段零均值、方差为 σ 2 \sigma^{2} σ2的复高斯白噪声序列 v ( n ) v\left ( n \right ) v(n)叠加3个归一化频率分别为 f 1 = 0.15 , f 2 = 0.17 , f 3 = 0.26 f_{1}=0.15,f_{2}=0.17,f_{3}=0.26 f1​=0.15,f2​=0.17,f3​=0.26,信噪比分别为 30 d B , 30 d B , 27 d B 30dB,30dB,27dB 30dB,30dB,27dB的复正弦信号构成。

仿真结果

令信号观测样本长度 N = 32 N=32 N=32,基于 F F T FFT FFT的自相关函数快速算法估计出的自相关函数 r 0 ^ ( m ) \hat{r_0}\left( m \right) r0​^​(m),并与由信号观测样本直接计算得到的自相关函数进行比较,结果如下, r 1 r_1 r1​代表基于 F F T FFT FFT的自相关函数快速算法估计出的自相关函数, r 0 r_0 r0​代表由信号观测样本直接计算得到的自相关函数,可以看到,二者结果是一样的。 在这里插入图片描述 既然是快速算法,它到底比利用样本函数直接计算自相关函数快了多少?

利用 M a t l a b Matlab Matlab中的 t i c , t o c tic,toc tic,toc函数,得到两种方法的运行时间,可以看到基于 F F T FFT FFT的自相关函数快速算法要比由信号观测样本直接计算自相关函数快一个数量级左右,这是很大的提升,特别是在样本点数 N N N很大时。 在这里插入图片描述 感兴趣的同学可以关注公众号 “工科南” 并回复 “ f f t c o r r fftcorr fftcorr” 获取相关的 M a t l a b Matlab Matlab代码。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3