傅里叶变换

2024-05-10 12:46

1. 傅里叶变换


傅里叶变换

2. 傅里叶变换

您对于傅里叶变换恐怕并不十分理解

    傅里叶变换的实质是将一个信号分离为无穷多多正弦/复指数信号的加成,也就是说,把信号变成正弦信号相加的形式——既然是无穷多个信号相加,那对于非周期信号来说,每个信号的加权应该都是零——但有密度上的差别,你可以对比概率论中的概率密度来思考一下——落到每一个点的概率都是无限小,但这些无限小是有差别的

    所以,傅里叶变换之后,横坐标即为分离出的正弦信号的频率,纵坐标对应的是加权密度

    对于周期信号来说,因为确实可以提取出某些频率的正弦波成分,所以其加权不为零——在幅度谱上,表现为无限大——但这些无限大显然是有区别的,所以我们用冲激函数表示

    已经说过,傅里叶变换是把各种形式的信号用正弦信号表示,因此非正弦信号进行傅里叶变换,会得到与原信号频率不同的成分——都是原信号频率的整数倍。这些高频信号是用来修饰频率与原信号相同的正弦信号,使之趋近于原信号的。所以说,频谱上频率最低的一个峰(往往是幅度上最高的),就是原信号频率。

    傅里叶变换把信号由时域转为频域,因此把不同频率的信号在时域上拼接起来进行傅里叶变换是没有意义的——实际情况下,我们隔一段时间采集一次信号进行变换,才能体现出信号在频域上随时间的变化。

    我的语言可能比较晦涩,但我已尽我所能向你讲述我的一点理解——真心希望能对你有用。我已经很久没在知道上回答过问题了,之所以回答这个问题,是因为我本人在学习傅里叶变换及拉普拉斯变换的过程中着实受益匪浅——它们几乎改变了我对世界的认识。傅里叶变换值得你用心去理解——哪怕苦苦思索几个月也是值得的——我当初也想过:只要会算题就行。但浙大校训“求是”时时刻刻鞭策着我追求对理论的理解——最终经过很痛苦的一番思索才恍然大悟。建议你看一下我们信号与系统课程的教材:化学工业出版社的《信号与系统》,会有所帮助。

3. 傅里叶变换

设u(t)的傅里叶变换为U(e^(jw)),那么u(t-2)的傅里叶变换为e^(-j2w)*U(e^(jw)),故u(t)-u(t-2)的傅里叶变换为[1-e^(-j2w)]*U(e^(jw));
根据t*u(t)的傅里叶变换为j*[U(e^(jw))的导数],所以t*[u(t)-u(t-2)]的傅里叶变换为j*{[1-e^(-j2w)]*U(e^(jw))的导数}。

傅里叶变换

4. 傅里叶变换


5. 傅里叶变换

e^(iwt)/(iw)=i*(cos wt +i sin wt)/(i*iw)=(icos wt-sin wt)/(-w)=(sin wt)/w - i cos wt/w
注意:sin wt/w 对w而言是偶函数,所以它在(∞,-∞)上的积分等于2倍的在(∞,0)上的积分;
而coswt/w是w的奇函数,它在对称区间上的积分为0。于是就得到题中的结果。

傅里叶变换

6. 傅里叶变换

1024点傅里叶变换,得到1024个数据,前512个数据与后512个数据重复,因此,有效数据为512个。
第1个数据表示直流分量,也可称0次谐波;
第2个数据表示基波分量,也可称1次谐波;
第3个数据表示2次谐波;
...
第512个数据表示511次谐波;
直流分量的频率为0Hz;
基波频率为1024个数据点对应时间长度的倒数;
n次谐波的频率为基波频率的n倍。

7. 傅里叶变换

 离散傅里叶变换(discrete Fourier transform) 傅里叶分析方法是信号分析的最基本方法,傅里叶变换是傅里叶分析的核心,通过它把信号从时间域变换到频率域,进而研究信号的频谱结构和变化规律。但是它的致命缺点是: 计算量太大,时间复杂度太高,当采样点数太高的时候,计算缓慢, 由此出现了DFT的快速实现,即下面的快速傅里叶变换FFT。
                                           这里原始信号的三个正弦波的频率分别为,200Hz、400Hz、600Hz,最大频率为600赫兹。根据采样定理,fs至少是600赫兹的2倍,这里选择1400赫兹,即在一秒内选择1400个点。
   1400   [-4.18864943e-12+0.j   9.66210986e-05-0.04305756j   3.86508070e-04-0.08611996j   8.69732036e-04-0.12919206j    1.54641157e-03-0.17227871j]
   换之后的结果数据长度和原始采样信号是一样的
   每一个变换之后的值是一个复数,为a+bj的形式下标为0和 N /2的两个复数的虚数部分为0,下标为i和 N - i 的两个复数共辄,也就是其虚部数值相同、符号相反。再用ifft()从频域转回时域之后,出现了由误差引起的很小的虚部,用np.real()取其实部即可.    由于一半是另一半的共轭,因此只需要关心一半数据.fft转换后下标为0的实数表示时域信号中的直流成分(不随时间变化)
                                                                                   振幅谱的纵坐标很大,而且具有对称性   Y=A1+A2 cos(2πω2+φ2)+A3 cos(2πω3+φ3)+A4*cos(2πω4+φ4)
   经过FFT之后,得到的“振幅图”中,   第一个峰值(频率位置)的模是A1的N倍,N为采样点,本例中为N=1400,此例中没有,因为信号没有常数项A1   第二个峰值(频率位置)的模是A2的N/2倍,N为采样点,   第三个峰值(频率位置)的模是A3的N/2倍,N为采样点,   第四个峰值(频率位置)的模是A4的N/2倍,N为采样点,
                                           STFT短时傅里叶变换,实际上是对一系列加窗数据做FFT。有的地方也会提到DCT(离散傅里叶变换),而DCT跟FFT的关系就是:FFT是实现DCT的一种快速算法。
   FFT有个参数N,表示对多少个点做FFT,如果一帧里面的点的个数小于N就会zero-padding到N的长度。每个点对应一个频率点,某一点n(n从1开始)表示的频率为:        第一个点(n=1,Fn等于0)表示直流信号,最后一个点N的下一个点(实际上这个点是不存在的)表示采样频率Fs。
   FFT后我们可以得到N个频点,比如,采样频率为16000,N为1600,那么FFT后就会得到1600个点,FFT得到的1600个值的模可以表示1600个频点对应的振幅。因为FFT具有对称性,当N为偶数时取N/2+1个点,当N为奇数时,取(N+1)/2个点,比如N为512时最后会得到257个值。    scipy.signal.stft(x,fs = 1.0,window =‘hann’,nperseg = 256,noverlap = None,nfft = None,detrend = False,return_oneside = True,boundary =‘zeros’,padded = True,axis = -1 ) 

傅里叶变换

8. 傅里叶变换

  原文1     2 
   先说一个最直接的用途。把sin(3x)+sin(5x)的曲线给你,但是前提是你不知道这个曲线的方程式,现在需要你把sin(5x)给我从图里拿出去,看看剩下的是什么。这基本是不可能做到的。但是在频域呢?则简单的很,无非就是几条竖线而已。尤其是从某条曲线中去除一些特定的频率成分,这在工程上称为滤波,是信号处理最重要的概念之一,只有在频域才能轻松的做到。
   再说一个更重要,但是稍微复杂一点的用途——求解微分方程。(这段有点难度,看不懂的可以直接跳过这段)微分方程的重要性不用我过多介绍了。各行各业都用的到。但是求解微分方程却是一件相当麻烦的事情。因为除了要计算加减乘除,还要计算微分积分。而傅里叶变换则可以让微分和积分在频域中变为乘法和除法,大学数学瞬间变小学算术有没有。
                                           可以发现,在频谱中,偶数项的振幅都是0,也就对应了图中的彩色直线。振幅为0的正弦波。也就是说,为了组成特殊的曲线,有些正弦波成分是不需要的。
   如果我们把第一个频率最低的频率分量看作“1”,我们就有了构建频域的最基本单元。对于我们最常见的有理数轴,数字“1”就是有理数轴的基本单元。时域的基本单元就是“1秒”,如果我们将一个角频率为  的正弦波  看作基础,那么频域的基本单元就是  
   有了“1”,还要有“0”才能构成世界,那么频域的“0”是什么呢?  就是一个周期无限长的正弦波,也就是一条直线! 所以在频域,0频率也被称为直流分量 ,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状。   
                                                                                   
   上一章的关键词是:从侧面看。这一章的关键词是:从下面看。
   通过时域到频域的变换,我们得到了一个从侧面看的频谱,但是这个频谱并没有包含时域中全部的信息。因为频谱只代表每一个对应的正弦波的振幅是多少,而没有提到相位。 基础的正弦波A.sin(wt+θ)中,振幅,频率,相位缺一不可 ,不同相位决定了波的位置,所以对于频域分析,仅仅有频谱(振幅谱)是不够的,我们还需要一个相位谱。那么这个相位谱在哪呢?我们看下图,这次为了避免图片太混论,我们用7个波叠加的图。   
                                                                                   
                                           在完整的立体图中,我们将投影得到的时间差依次除以所在频率的周期,就得到了最下面的相位谱。所以,频谱是从侧面看,相位谱是从下面看。
   注意到,相位谱中的相位除了0,就是  。因为  ,所以实际上相位为  的波只是上下翻转了而已。对于周期方波的傅里叶级数,这样的相位谱已经是很简单的了。另外值得注意的是,由于  ,所以相位差是周期的,  和  都是相同的相位。人为定义相位谱的值域为  ,所以图中的相位差均为  。
   傅里叶级数,在时域是一个周期且连续的函数,而在频域是一个非周期离散的函数。   傅里叶变换是将一个时域非周期的连续信号,转换为一个在频域非周期的连续信号。
                                           虚数i我们只知道它是-1的平方根,可是它真正的意义是什么呢?
                                           在数轴上有一个红色的线段,它的长度是1。当它乘以3的时候,它的长度发生了变化,变成了蓝色的线段,而当它乘以-1的时候,就变成了绿色的线段,或者说线段在数轴上围绕原点旋转了180度。我们知道乘-1其实就是乘了两次 i使线段旋转了180度,那么乘一次 i 呢——答案很简单——旋转了90度。
                                           欧拉公式:     当x等于Pi的时候:     这个公式关键的作用,是将正弦波统一成了简单的指数形式。我们来看看图像上的涵义:   
                                           
   这里,我们可以用两种方法来理解正弦波:   第一种前面已经讲过了,就是螺旋线在实轴的投影。   另一种需要借助欧拉公式的另一种形式去理解:             将以上两式相加再除2,得到:        我们刚才讲过,  可以理解为一条逆时针旋转的螺旋线,那么  则可以理解为一条顺时针旋转的螺旋线。而  则是这两条旋转方向不同的螺旋线叠加的一半,因为这两条螺旋线的虚数部分相互抵消掉了!   
                                                                                                                                                                                                           
   从代数上看,傅立叶级数就是通过三角函数和常数项来叠加逼近周期为  的函数       
   在“代数细节”一文中解释了,实际上是把  当作了如下基的向量:               是基1下的坐标,  是对应基的坐标   比如刚才提到的,  的方波  ,可以初略的写作: