使用C 類模板實現離散傅利葉變換 DFT

2021-08-25 16:35:50 字數 1220 閱讀 1352

/*  file : dft.h

* description : 複數類、離散傅利葉變換類模板

* formula : x(k)= ∑n=x(n) e^-j2π/nnk

* ** auther : hanc<[email protected]>

* create time : 2018.8.14

* */

#ifndef dft_h

#define dft_h

#include #include #include #define pi 3.1415926535

namespace hclib

complex(double a,double b)

void setreal(double v)

void setimag(double v)

double getreal()

double getimag()

//複數求模

double calmodular()

//操作符過載:兩複數物件相加

complex operator + (const complex& parm)

//操作符過載:兩複數物件相減

complex operator - (const complex& parm)

//操作符過載:兩複數物件相乘

complex operator * (const complex& parm)

//操作符過載:兩複數物件 +=

complex& operator += (const complex& parm)

};templateclass dft

double getreal(int i)

double getimag(int i)

t getmvalue(int i)

void insert_srcdata(t* src,int n)//拷貝數碼訊號至m_array

void dft_cal_point(int p) //計算頻域上乙個點的dft的實部、虛部、模值

m_complex[p] = thispoint;

m_value[p] = m_complex[p].calmodular();

}void dft_cal() //計算所有dft

}};}

#endif // dft_h

離散傅利葉變換 快速傅利葉變換C 實現

傅利葉變換是將時域訊號變換為頻域訊號的一種方式,我主要用它來做兩件事情 1 求一段資料的週期性。2 通過傅利葉變換及其逆變換,進行低通濾波 去躁 首先需要做幾點說明 1.快速傅利葉變換是離散傅利葉變換的快速演算法,當資料來源較大時 大於1000 快速傅利葉變換有明顯優勢。2.快速傅利葉變換的訊號源長...

使用python實現離散時間傅利葉變換

我們經常使用傅利葉變換來計算數碼訊號的頻譜,進而分析數碼訊號,離散時間傅利葉變換的公式為 x ejw n n x n e jwn x e jw n n x n e j wn可是自己動手實現一遍才是最好的學習。在數字分析裡面,傅利葉變換預設等時間間隔取樣,不需要時間序列,只需要訊號陣列即可分析。分析過...

離散時間傅利葉變換DTFT實現

使用matlab軟體畫出頻譜圖 x zeros 1,3 m ones 1,n zeros 1,3 m 給出輸入序列 w 15 0.1 15 1e 10 x sin 0.5 n w t sin 0.5 w t 給出頻譜序列 subplot 1,3,1 stem n,x,畫出輸入序列 axis 20,2...