一维离散傅里叶变换

简介: 笔记

直接上干货

一. 欧拉公式


1.png

二. 傅里叶变换


  1. N为采样的总个数,也就是样本的总个数
    2.png
  2. 应用欧拉公式

3.png

三. 傅里叶逆变换


  1. 公式
    4.png

四. c++编程实现


#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
#define PI 3.1415926535
class FFT {
private:
  double real[8], imag[8];
  double re[8], im[8];
  int i = 0;
public:
  FFT() {};
  void init();
  void print();
  void fft();
  void ifft();
};
void FFT::init()
{
  for (int i = 1; i < 9; i++)
    real[i-1] = double(i), imag[i-1] = 0.0;
}
void FFT::print()
{
  if (i==0)
    cout << "原始数据" << endl;
  i++;
  for (int i = 0; i < 8; i++)
    cout << real[i] << " " << imag[i] << endl;
}
void FFT::fft()
{
  double a=0, b=0;
  for (int i = 0; i < 8; i++)
  {
    a = 0; b = 0;
    for (int j = 0; j < 8; j++)
    {
      a += real[j] * cos((2 * PI*i*j) / 8);
      b += real[j] * sin((2 * PI*i*j) / 8);
    }
    re[i] = a;
    im[i] = -b;
  }
  cout << "变换后的数据" << endl;
  for (int i = 0; i < 8; i++)
  {
    cout << re[i] << " " <<setiosflags(ios::fixed)<<setprecision(10)<< im[i] << endl;
  }
}
void FFT::ifft()
{
  double a = 0, b = 0;
  for (int i = 0; i < 8; i++)
  {
    a = 0;
    b = 0;
    for (int j = 0; j < 8; j++)
    {
      a += re[j] * cos((i*j * 2 * PI) / 8) - im[j] * sin((i*j * 2 * PI) / 8);
      b += im[j] * cos((i*j * 2 * PI) / 8) + re[j] * sin((i*j * 2 * PI) / 8);
    }
    real[i] = a / 8;
    imag[i] = b / 8;
  }
}
int main()
{
  FFT a;
  a.init();
  a.print();
  a.fft();
  a.ifft();
  cout << "逆变换后的数据" << endl;
  a.print();
  return 0;
}

程序结果

10.png

刚开始学,理解程度不够,只能写一下公式,程序,哎。O(∩_∩)O哈哈~


Thank for your reading !!!


公众号:FPGA之旅


目录
相关文章
超实用!五种常用的多离散化小技巧
超实用!五种常用的多离散化小技巧
430 0
【MATLAB】离散余弦变换滤波算法(DCT)
之前介绍的所有滤波算法都是空间域滤波算法(即2D滤波算法)。离散余弦变换滤波算法(DCT)属于频率域滤波算法(即3D滤波算法)。
490 0
【MATLAB】离散余弦变换滤波算法(DCT)
数字图像处理——图像变换(二维离散傅里叶正逆变换fft2/fft2、离散余弦正逆变换dct2/idct2、频谱正逆平移fftshift/ifftshift、幅度谱与相位谱)| 例题与分析
数字图像处理——图像变换(二维离散傅里叶正逆变换fft2/fft2、离散余弦正逆变换dct2/idct2、频谱正逆平移fftshift/ifftshift、幅度谱与相位谱)| 例题与分析
409 0
数字图像处理——图像变换(二维离散傅里叶正逆变换fft2/fft2、离散余弦正逆变换dct2/idct2、频谱正逆平移fftshift/ifftshift、幅度谱与相位谱)| 例题与分析
数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)
数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)
479 0
数字图像处理实验(二)|图像变换{离散傅里叶变换fft2,离散余弦变换dct2、频谱平移fftshift}(附实验代码和截图)
【线性代数】求矩阵的特征值、特征向量和协方差矩阵
线性代数基础知识:求矩阵的特征值、特征向量和协方差矩阵
【线性代数】求矩阵的特征值、特征向量和协方差矩阵
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等