c語(yǔ)言傅里葉變換程序怎么實(shí)現(xiàn)

小億
107
2024-08-05 18:41:13

實(shí)現(xiàn)傅里葉變換的C語(yǔ)言程序可以使用庫(kù)函數(shù)或者自己編寫(xiě)代碼來(lái)實(shí)現(xiàn)。以下是一個(gè)使用庫(kù)函數(shù)的示例代碼:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <fftw3.h>

int main() {
    int N = 8; // 采樣點(diǎn)數(shù)
    double *in = (double*) fftw_malloc(sizeof(double) * N);
    fftw_complex *out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);

    fftw_plan p;
    p = fftw_plan_dft_r2c_1d(N, in, out, FFTW_ESTIMATE);

    // 初始化輸入信號(hào)
    for (int i = 0; i < N; i++) {
        in[i] = sin(2 * M_PI * i / N);
    }

    // 執(zhí)行傅里葉變換
    fftw_execute(p);

    // 輸出變換結(jié)果
    for (int i = 0; i < N; i++) {
        printf("out[%d] = %f + %f*I\n", i, out[i][0], out[i][1]);
    }

    fftw_destroy_plan(p);
    fftw_free(in);
    fftw_free(out);

    return 0;
}

在上面的示例代碼中,首先使用fftw庫(kù)函數(shù)進(jìn)行了傅里葉變換的初始化,然后生成了一個(gè)正弦波信號(hào)作為輸入信號(hào),在執(zhí)行傅里葉變換后輸出了變換結(jié)果。通過(guò)這種方式可以很方便地實(shí)現(xiàn)傅里葉變換的計(jì)算。

0