负数,傅里叶变换,反傅里叶变换(错)

Posted wangbin-heng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负数,傅里叶变换,反傅里叶变换(错)相关的知识,希望对你有一定的参考价值。

#include <QCoreApplication>
#include "C:UsersAdministratorDesktopfftwfftw-3.3.4-dll32fftw3.h"
#include "D:QtEigenDense"
#include <stdio.h>
#include <iostream>
#include <complex>

using namespace std;
//  using namespace fftw_complex;
#define N 3

class MyComplex:public complex<double>
{
public:
    MyComplex():complex<double>(0.0, 0.0){m_r=0.0;m_i=0.0;}
    MyComplex(double r, double i):complex<double>(r,i){m_r=r;m_i=i;}
    double getR(){return m_r;}
    double getI(){return m_i;}
private:
    double m_r;
    double m_i;
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    //complex<float> www=(1,5);
    MyComplex www(2,4);
    std::cout<<www<<std::endl;
    std::cout<<www.getR()<<std::endl;
    std::cout<<www.getI()<<std::endl;

    int i;
    fftw_complex *in, *out, *result;
    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N * N);
    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N * N);
    result = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N * N);
    if (in == NULL || out == NULL)
    {
        printf("ERROR!");
    }
    else
    {
        //for (i=0; i<N*N; i++)
        {
            in[0][0] = 0;     in[0][1] = 0;
            in[1][0] = 1;     in[1][1] = 0;
            in[2][0] = 2;     in[2][1] = 0;
            in[3][0] = 2;     in[3][1] = 0;
            in[4][0] = 3;     in[4][1] = 0;
            in[5][0] = 4;     in[5][1] = 0;
            in[6][0] = 3;     in[6][1] = 0;
            in[7][0] = 2;     in[7][1] = 0;
            in[8][0] = 1;     in[8][1] = 0;
        }
    }
    for (i=0; i<N*N; i++)
    {
        printf("%.6f, %.6fi     ", in[i][0], in[i][1]);
        if(i==2||i==5||i==8)printf("
");
    }

    cout << endl;
    fftw_plan p = fftw_plan_dft_2d(N, N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
    fftw_execute(p);
    for (i=0; i<N*N; i++)
    {
        printf("%.6f, %.6fi     ", out[i][0], out[i][1]);
        if(i==2||i==5||i==8)printf("
");
    }


//    cout << endl;
//    fftw_plan pp = fftw_plan_dft_2d(N, N, out, result, FFTW_BACKWARD, FFTW_ESTIMATE);
//    fftw_execute(pp);
//    for (i=0; i<N*N; i++)
//    {
//        printf("%.6f, %.6fi     ", result[i][0], result[i][1]);
//        if(i==2||i==5||i==8)printf("
");
//    }
    fftw_destroy_plan(p);
    fftw_cleanup();
    if (in!=NULL)
        fftw_free(in);
    if (out!=NULL)
        fftw_free(out);
}
QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle
LIBS += -L"C:UsersAdministratorDesktopfftwfftw-3.3.4-dll32"     -llibfftw3-3
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += main.cpp

技术分享图片

以上是关于负数,傅里叶变换,反傅里叶变换(错)的主要内容,如果未能解决你的问题,请参考以下文章

数字信号处理序列傅里叶变换 ( 傅里叶变换实例 | 傅里叶变换 | 傅里叶变换幅频特性 | 傅里叶变换相频特性 )

数字信号处理傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | 序列实偶 傅里叶变换 实偶 | 序列实奇 傅里叶变换 虚奇 | 证明 “ 序列实奇 傅里叶变换 虚奇 “ )

傅里叶变换简介

傅里叶变换与卷积的区别

傅里叶变换滤波之生物信号滤波(笔记03)

数字信号处理序列傅里叶变换 ( 序列傅里叶变换与反变换 | 序列绝对可和 与 存在傅里叶变换之间的关系 | 序列傅里叶变换性质 )