简单就地离散傅立叶变换 (DFT)

2024-02-21

我正在编写一个非常简单的就地 DFT。我正在使用此处显示的公式:http://en.wikipedia.org/wiki/Discrete_Fourier_transform#Definition http://en.wikipedia.org/wiki/Discrete_Fourier_transform#Definition与欧拉公式一起避免为此使用复数类。到目前为止我有这个:

private void fft(double[] data)
        {
            double[] real = new double[256];
            double[] imag = new double[256];
            double pi_div_128 = -1 * Math.PI / 128;
            for (int k = 0; k < 256; k++)
            {
                for (int n = 0; n < 256; n++)
                {
                    real[k] += data[k] * Math.Cos(pi_div_128 * k * n);
                    imag[k] += data[k] * Math.Sin(pi_div_128 * k * n);
                }
                data[k] = Math.Sqrt(real[k] * real[k] + imag[k] * imag[k]);
            }
        }

但 Math.Cos 和 Math.Sin 项最终都会变成正数和负数,所以当我将这些项与 data[k] 相乘时,它们会抵消,我只会得到一些小得离谱的值。我知道这是如何发生的,但我无法理解我的代码可能如何错误地表示了数学。任何帮助表示赞赏。仅供参考,我确实必须自己编写,我意识到我可以得到现成的 FFT。


我相信您在这一部分有一个错误

for (int n = 0; n < 256; n++)
{
    real[k] += data[k] * Math.Cos(pi_div_128 * k * n);
    imag[k] += data[k] * Math.Sin(pi_div_128 * k * n);
}

您应该将 data[k] 替换为 data[n]

EDIT:

您还破坏了您的数据:

data[k] = Math.Sqrt(real[k] * real[k] + imag[k] * imag[k]);

您必须将复数的模数存储在其他地方或稍后。如果模数就是您想要的,并且您想将其存储在 data[] 中,则必须在计算变换后编写另一个循环。,整个 data[] 对于计算每个 real[k] 和 imag [k] 是必要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单就地离散傅立叶变换 (DFT) 的相关文章

随机推荐

  • r:使用所有可能的选项和变量组合数量创建数据框

    这个问题可能很明显或已经被问过 但我找不到解决方案 我想创建一个包含所有可能组合 和变量数量 的数据框 如下例所示 dataframe lt data frame variable 1 4 a c gender NA NA NA b c a
  • 使用 Azure API 管理模拟故障转移

    Azure API 管理支持多区域部署 这对于我们的 API 和后端服务的 HA 非常有用 我们正在使用它来测试我们的多区域部署 但是 我们如何测试它呢 我们如何模拟或手动触发 API 管理上的故障转移 提前致谢 APIM 的优质捆绑提供了
  • 使用 xargs 进行并行 Python 脚本

    我目前有一个 bash 脚本 script sh 带有两个嵌套循环 第一个枚举 a 的可能值 第二个枚举 b 的可能值 例如 bin sh for a in 1 10 do for b in 1 10 do nohup python scr
  • Nuxt SSR - 我无法检查用户是否经过身份验证

    我正在尝试使用带有会话身份验证的 Django 后端的 Nuxt SSR 前端 我希望在我的前端中有一些 SSR 页面以及客户端渲染的页面 所以我正在使用通用模式 问题是我没有找到一种工作方法来在加载页面之前检查用户是否经过身份验证 因此我
  • Grails 条件可为空验证或带有可为空选项的自定义验证器

    我有一个表格来创建一个地方 根据国家 地区的不同 省 州 地区 字段是否为必填项 当不需要时 我希望为null 而不是空字符串 我有使所有空表单字段为空的代码 def newparams place new Place params eac
  • 在 MSBuild 中获取本机 exe 的文件版本

    我在 Visual Studio 2010 解决方案中有许多 Visual C 项目 此解决方案中还有一个 WiX 项目 它为可执行文件 C 项目之一的产品 构建安装程序 可执行文件在其项目中有一个资源文件 它将程序的版本写入可执行文件 现
  • Nuget Config.Transform 格式问题

    我创建了一个Nuget 配置转换文件 http docs nuget org docs creating packages configuration file and source code transformations具有以下变换
  • ActivityInstrumentationTestCase2 中的模拟帐户

    在我的活动中 我获得了帐户onCreate public void MyActivity extends Activity private Account accounts Override protected void onCreate
  • 什么是概率数据结构?

    我读过有关 概率 数据结构的内容 例如布隆过滤器和跳过列表 概率数据结构有哪些共同特征以及它们的用途是什么 可能有很多不同的 并且很好的 答案 但以我的拙见 概率数据结构的共同特征是它们为您提供近似的而不是精确的答案 这里有多少件物品 大约
  • 最终瞬态字段的序列化/反序列化

    In this https stackoverflow com questions 2968876 final transient fields and serialization问题说final transient序列化后字段不能设置为任
  • 检测数组中作为复杂多边形顶点的一组点是否按顺时针或逆时针顺序定义?

    编辑 我更新了program http colekito com ProgrammingProjects Science 20Fair 有了答案 效果很好 我正在做一个program http colekito com Programmin
  • 如何让 SQLAlchemy 覆盖 MySQL“更新 CURRENT_TIMESTAMP”

    我继承了一个较旧的数据库 该数据库设置为 更新时 CURRENT TIMESTAMP 该字段放在一个仅应该描述项目创建的字段上 使用 PHP 我一直在 UPDATE 子句上使用 timestamp timestamp 但在 SQLAlche
  • C++ system() 函数 — 如何收集发出的命令的输出?

    我正在使用 C 运行一些命令system 功能 int system const char command 如何从发出的命令中收集标准输出 具体来说 我想收集发出的命令的输出 例如 发出命令的输出的目录列表 dir命令 您是否正在寻找执行命
  • 测量 ASP.NET Core 中异步代码与同步代码的性能

    我正在尝试使用 SQL Server Express 和 EF Core 3 1 3 来衡量 ASP NET Core 3 1 中异步与同步的性能 并且有两个完全相同的函数 除了一个是异步的 一个是同步的 HttpGet search de
  • 我们如何根据索引更新dynamodb表(而不是基于主键和范围键)

    我们如何基于索引 而不是基于主键和范围键 更新dynamodb表 我有一个按名称创建的索引key id index哈希值是asset id范围是hit id 我想根据以下内容更新表格key id index因为我在更新时不知道这些 var
  • 我获得了客户端中间件,但如何保护 S3 上的用户资源?

    我得到了客户端中间件 但我不希望出现用户意外或恶意删除其他用户的资源的情况 如何保护 S3 上的资源 以便用户只能删除自己的资源 而不能删除任何其他用户的资源 非常感谢 我不希望出现用户意外或恶意删除其他用户资源的情况 当您设置 S3 存储
  • Webpack hmr:__webpack_hmr 404 未找到

    我正在使用 webpack dev server 进行热模块替换 它工作得很好 但是这个错误每隔几秒钟就会出现在控制台中 GET http mysite 8080 webpack hmr 404 Not Found 这是我的 webpack
  • JSON Patch 规范的解释

    我有一个关于 JSON Patch 的解释的问题 RFC 6902 https www rfc editor org rfc rfc6902 假设我有一个如下所示的资源 type assembly uri http example com
  • useMemo 与 useEffect + useState

    使用有什么好处吗useMemo 例如 对于密集的函数调用 而不是使用组合useEffect and useState 这里有两个定制的钩子 乍一看它们的工作原理完全相同 此外useMemo的返回值为null在第一次渲染时 useEffect
  • 简单就地离散傅立叶变换 (DFT)

    我正在编写一个非常简单的就地 DFT 我正在使用此处显示的公式 http en wikipedia org wiki Discrete Fourier transform Definition http en wikipedia org w