java實現傅利葉變換

2021-08-20 20:33:03 字數 1787 閱讀 6423

biz.source_code.dsp

.math

.complex result = dft.goertzelspectrum(data);

double valuex =dft.synthesizefromspectrum(frequencyx, obb);
(t)

=100si

n(10π

t)+25

sin(

30πt)

x(t)=100sin(10πt)+25sin(30πt)

double time       = new double[150];

double valuea = new double[150];

for ( int i = 0; i < 50 * 3; i++ )

double deltatime = 1 / 50.0;

complex result = dft.goertzelspectrum( valuea );

double deltafrequency = 0.5 / deltatime / (result.length - 1);

for ( int i = 0; i < result.length; i++ )

執行結果:

頻率:

4.67hz 幅值:

0.00

頻率:

5.00hz 幅值:

100.00

頻率:

5.33hz 幅值:

0.00

...頻率:

14.67hz 幅值:

0.00

頻率:

15.00hz 幅值:

25.00

頻率:

15.33hz 幅值:

0.00

double time = new

double[150];

double valuea = new

double[150];

for (int i = 0; i < 50 * 3; i++)

double deltatime = 1 / 50.0;

complex result = dft.goertzelspectrum(valuea);

double deltafrequency = 0.5 / deltatime / (result.length - 1);

boolean obb = false;

if (valuea.length % 2 == 1) else

double valuex = dft.synthesizefromspectrum(result, obb);

for (int i = 0; i < valuex.length; i++)

no.0  初始: 0.00  計算得:-0.00

no.1 初始: 82.55 計算得: 82.55

no.2 初始: 80.41 計算得: 80.41

no.3 初始: 80.41 計算得: 80.41

no.4 初始: 82.55 計算得: 82.55

...no.146 初始:-82.55 計算得:-82.55

no.147 初始:-80.41 計算得:-80.41

no.148 初始:-80.41 計算得:-80.41

no.149 初始:-82.55 計算得:-82.55

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

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

傅利葉變換 FFT cuda實現

參考 無意間看到cuda解決fft有乙個cufft函式庫,大體檢視了有關cufft有關知識,寫了乙個解決一維情況的cuda 據調查知道cufft在解決1d,2d,3d的情況時間複雜度都為o nlogn 附上解決 一維情況的 準備後面找一些詳細的資料去學習一下cuda的函式庫。include stdi...

傅利葉變換與快速傅利葉變換

作為電子資訊專業的學生老說,這個不知道,或者理解不清楚,是十分不應該的,作為乙個學渣,有時候確實是理解不清楚的 1 首先離散傅利葉變換目的 簡單點說 就是將乙個訊號從時域變換到頻域 標準點說 將以時間為自變數的訊號 與 頻率為自變數的頻譜函式之間的某種關係變換 數學描述 對於 n點序列 其中自然對數...