Bootstrap

sin的傅里叶变换公式_正弦信号傅里叶变换

设计功能:

1.  正弦信号绘制

考虑到绘制的界面大小有限,所有信号统一绘制四个周期,如果是两个正弦相加或相乘,将会绘制频率小的四个周期,每个周期都会在x轴显示时间,单位秒,来表示不同频率的信号。即x(t)=Asin(2πfat)。检查时发现幅度显示有误,有机会会改。

2.  对两个正弦信号相加和相乘

可以选择是加法型还是乘法型,红字代表当前的状态,fa1,A1是一信号的频率和幅度,fa2和A2是二信号的频率和幅度。默认状态时,二信号的A2都是零。fa会自动取fa1和fa2中较小且不为零的值,来保证绘制的连续信号是频率小的四个周期。后续有机会可以加上相位φ;还可以加更多信号的功能,甚至可以单独为信号合成设计界面。当有一个信号幅度较小,频率较小,另一个信号幅度较大,频率较大,可以观测出明显的包络线现象。

3.  对连续信号采样成离散信号。

fs是采样频率。N是截取长度。对连续信号进行采样。x(n)=Asin(2πnfa/fs)。fs过小时,加法时,小于fa1和fa2中大的那个两倍时;乘法时,小于fa1和fa2乘积,且fa1,fa2都不为零时,会产生混叠现象;当N不是fs/fa的整数倍时会产生泄露现象,多个信号合成时,N不是任一fs/fan的整数倍时,都会产生泄露现象。由于界面有限,N过大时,大于一两千图就不清楚了,后续有机会可以单独为信号离散化设计界面。

4.  对离散信号DFT,绘制频谱图,记录算法效率

根据DFT公式,将其中的W写成e的指数形式,再展开成三角函数形式,将实部虚部分开存储,从而避免虚数j。X[n].Re=∑x(n)*cos(2πnm/N),0<=n<=N-1;X[n].Im=-∑x(n)*sin(2πnm/N),0<=n<=N-1。幅频图|X(n)|=(X[n].Re^2+X[n].Im^2)½,相频图φ[n]=atan(X[n].Im/X[n].Re)。

5.  对离散信号FFT,绘制频谱图,记录算法效率

根据FFT公式,同理。G[n].Re=∑x(2n)*cos(4πnm/N),0<=n<=N/2-1;G[n].Im=∑x(2n)*sin(4πnm/N),0<=n<=N/2-1;H[n].Re=∑x(2n+1)*cos(2π(2n+1)m/N),0<=n<=N/2-1;H[n].Im=∑x(2n+1)*sin(2π(2n+1)m/N),0<=n<=N/2-1;之后X[n].Re=G[n].Re+H[n].Re; X[n].Im=G[n].Im+H[n].Im; X[n+N/2].Re=G[n].Re-H[n].Re; X[n+N/2].Im=G[n].Im-H[n].Im。由于当N很小时,计算机计算时间很短,1ms不到,没有手段检测。一开始采取在最里层循环加延时1ms,这样大部分情况FFT都比DFT快,但强制延时会有不可抗的冲突,效率比一直会变,甚至有时DFT比FFT都快;所以又将这个延时改成了一个+1的计数,这样这个效率比是关于N的固定函数值。DFT和FFT在幅频图一致,但相频图有不一致的点,这些点的幅度都为零,我们暂时认为没有影响。

6.  对DFT后的结果IDFT,绘制还原后的离散信号

根据IDFT公式,用X[n]反求x[n]。x[n].Re=1/N*∑(X(n).Re*cos(2πnm/N)- X(n).Im*sin(2πnm/N)),0<=n<=N1;x[n].Im=1/N*∑(X(n).Im*sin(2πnm/N)+X(n).Re*sin(2πnm/N)),0<=n<=N-1;最后x[n]= (x[n].Re^2+x[n].Im^2)½。还原后的离散信号全为正值。后续有机会可以用内插函数还原成连续信号x(t)。

算法过程:

1.  采样算法:

4cffbcff0d09a1759e2aa6c33e141ee7.png

2.  DFT算法:

fcdb9dd07ea0771ea61326f567dc5b50.png

3.  FFT算法:

1599956911b9a2e0639ebb5d946103a1.png

4.  IDFT算法:

75f8aeb8291d632d7548ee07f6f7f7a3.png

演示结果:

1.  不同单一频率正弦信号绘制:

c310684690f739697713300138dc4d29.png

上图为fa1=1HZ时。

e3f233663d23ae1728863a57e4ad3c02.png

上图为fa1=100HZ时。

2.  正弦信号相加以及产生包络线:

93375c65f1a4dd99e7fdf14645d25f63.png

上图是两个简单正弦波相加

84df5ced3c22d4ef49ca1e0fa5727b17.png

上图是两个正弦波相加产生包络线(幅度相加,不同于高频学的频率相加,所以包络线不一样)

3.  正弦信号相乘:

a9d5056dfcb6488f39f1b8f83895dfe9.png

上图是两个简单正弦波相乘

5717a4e500bda749c7aada0f8cbcfe72.png

上图是两个正弦波相乘(幅度相乘)

4.  同一

;