2021-11-01-FFT心得(皮毛)--运用C#实现FFT

本文介绍了离散傅里叶变换DFT和快速傅里叶变换FFT的基本概念,详细讲解了基2FFT算法,通过N=8的实例展示了蝶形运算的过程,并提供了C#代码实现的解读。
摘要由CSDN通过智能技术生成

总结:

1.离散傅里叶变换DFT
2.快速傅里叶变换FFT
2.1 基2FFT算法
2.2 例:时间抽选基2FFT算法
2.3 以N=8举例说明蝶形运算
2.4 码位倒置伪算法
3. C#代码解读
4. 参考:

1.离散傅里叶变换DFT

在这里插入图片描述

2.快速傅里叶变换FFT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. C#代码解读

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FFT_Prj
{
   
    public class Complex
    {
   
       //实部Re 虚部Im
        public double Re;
        public double Im;
        public Complex()
        {
   
            Re = 0;
            Im = 0;
        }
        public Complex(double re)
        {
   
            Re = re;
            Im = 0;
        }
        public Complex(double re, double im)
        {
   
            Re = re;
            Im = im;
        }

        //求幅值
        public double Modulus()
        {
   
            return Math.Sqrt(Re * Re + Im * Im);
        }

        public override string ToString()
        {
   
            string retStr;
            if (Math.Abs(Im) < 0.0001)
            {
   
                retStr = Re.ToString("f4");
            }
            else if (Math.Abs(Re) < 0.0001)
            {
   
                if (Im > 0) 
                    retStr = "j" + Im.ToString("f4");
                else 
                    retStr = "- j" + (0 - Im).ToString("f4");
            }
            else
            {
   
                if (Im > 0) 
                    retStr = Re.ToString("f4") + "+ j" + Im.ToString("f4");
                else 
                    retStr = Re.ToString("f4") + "- j" + (0 - Im).ToString("f4");
            }
            retStr += " ";
            return retStr;
        }

        //操作符重载
        public static Complex operator +(Complex c1, Complex c2)
        {
   
            return new Complex(c1.Re + c2.Re, c1.Im + c2.Im);
        }
        public static Complex operator +(double d, Complex c)
        {
   
            return new Complex(d + c.Re, c.Im);
        }

        public static Complex operator -(Complex c1, Complex c2)
        {
   
            return new Complex(c1.Re - c2.Re, c1.Im - c2.Im);
        }
        public static Complex operator -(double d, Complex c)
        {
   
            return 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值