快速傅立叶变换(FFT)的C#代码

本文介绍了一段C#代码,用于实现快速傅立叶变换(FFT),并从C++代码中移植而来。代码实现了根据输入数组长度动态确定N值的功能,并提供了位反转置换函数。同时,代码包括了FFT和IFFT(快速傅立叶逆变换)的实现,附带了测试用例,确保结果正确。
摘要由CSDN通过智能技术生成
这个代码是从《 快速傅立叶变换(FFT)的C++实现与Matlab实验 》这篇文章里的源代码转换而来,请注意查看原文。
在这里自己转换成了C#代码,并作了一些改动,主要是对N值的确定,原文的N值为常量1024,自己通过对输入的数组的长度来确定N值,N值的确定符合2的n次方,函数返回N值。通过作者提供的测试变量进行测试,能得到相应的结果。代码如下:
FFT代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    /// <summary>
    /// 快速傅立叶变换(Fast Fourier Transform)。 
    /// </summary>
    public class TWFFT
    {
        private TWFFT()
        {
        }
        private static void bitrp(float[] xreal, float[] ximag, int n)
        {
            // 位反转置换 Bit-reversal Permutation
            int i, j, a, b, p;
            for (i = 1, p = 0; i < n; i *= 2)
            {
                p++;
            }
            for (i = 0; i < n; i++)
            {
                a = i;
                b = 0;
                for (j = 0; j < p; j++)
                {
                    b = b * 2 + a % 2;
                    a = a / 2;
                }
                if (b > i)
                {
                    float t = xreal[i];
                    xreal[i] = xreal[b];
                    xreal[b] = t;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值