从 rfft2 数组创建 fft2 结果

2024-01-24

我试图通过操作 rfft2 的结果来重新创建完整 fft2 的结果。该文档指出 rfft2 仅计算正系数,因为当输入为实数时,负系数与正系数具有对称性。这对于大型数组非常有用,因为计算 rfft2 比完整的 fft2 快得多。

所以下面的代码是我尝试从 rfft2 输出重新创建 fft2 。我已经尝试过对“左”数组的各种操作,但不能完全让“相同”在任何地方都是正确的。有任何想法吗?

import numpy as np
import matplotlib.pyplot as plt

from skimage.data import camera

frame = camera()

full_fft = np.fft.fft2(frame)
real_fft = np.fft.rfft2(frame)

left = real_fft[:, :-1].copy()
right = np.flipud(left[:, ::-1])

sim_fft2 = np.hstack((left, right))

same = np.isclose(full_fft, sim_fft2)

plt.figure()
plt.imshow(same)

plt.figure()
plt.imshow(np.log(np.abs(full_fft)))

plt.figure()
plt.imshow(np.log(np.abs(sim_fft2)))

我通过在 6x6 数组上执行 fft2 计算出对称性,然后只需编写一个函数即可将 rfft2 的输出转换为与 fft2 相同。下面是该函数和对称性图像。

def _rfft2_to_fft2(im_shape, rfft):
    fcols = im_shape[-1]
    fft_cols = rfft.shape[-1]

    result = numpy.zeros(im_shape, dtype=rfft.dtype)

    result[:, :fft_cols] = rfft

    top = rfft[0, 1:]

    if fcols%2 == 0:
        result[0, fft_cols-1:] = top[::-1].conj()
        mid = rfft[1:, 1:]
        mid = numpy.hstack((mid, mid[::-1, ::-1][:, 1:].conj()))
    else:
        result[0, fft_cols:] = top[::-1].conj()
        mid = rfft[1:, 1:]
        mid = numpy.hstack((mid, mid[::-1, ::-1].conj()))

    result[1:, 1:] = mid

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

从 rfft2 数组创建 fft2 结果 的相关文章

随机推荐

  • 如何在android中的同一个textview中显示粗体和普通文本?

    我搜索过互联网并尝试了以下代码 但它不起作用 SpannableString ss1 new SpannableString Health ss1 setSpan new android text style StyleSpan andro
  • 如何使用 Boost Hana 消除元编程递归

    我正在尝试根据发送到函数的类型创建一个位集 但让我们稍微减少一下测试用例 Warning 我在这个例子中使用自动 gcc 扩展 我不需要使用模板参数 该错误是由于使用手动递归导致的越界访问造成的 函数式编程的部分目的是提供结构来消除此类错误
  • 如何获取 Coldfusion 中的 URL 参数和值?

    如何获取 Coldfusion 中的 URL 参数和值 例如 我的网址是 test cfm par1 val1 par2 val2 par3 val3 是否可以直接获取第二个参数及其值 with
  • “git add --patch”包含新文件?

    当我跑步时git add p 有没有办法让 git 选择新制作的文件作为 hunk 来选择 所以如果我创建一个名为foo java 然后运行 git add p git 不会让我选择要添加到索引中的文件内容 当我尝试时git add p s
  • 如何将可观察列表转换为数组列表?爪哇

    我试图获取表视图中的所有项目并将它们放入数组列表中以进行进一步处理 这就是我想要实现的目标 但显然这是行不通的 ArrayList
  • 为什么 Channel.waitForConfirmsOrDie 不阻塞?

    我有一个发布 订阅用例 我想在发布端进行阻止 直到每个订阅者确认他们已完成处理发布者发送的消息 我 错误地 假设我可以使用 RabbitMQ 及其 Java amqp client 的 Channel waitForConfirmsOrDi
  • 如何向矢量绘图添加阴影?

    我有一个矢量可绘制对象 category bg 我将其用作 FrameLayout 的背景
  • sklearn随机森林索引feature_importances_如何实现

    我在 sklearn 中使用 RandomForestClassifier 来确定数据集中的重要特征 我如何能够返回实际的功能名称 我的变量标记为 x1 x2 x3 等 而不是它们的相对名称 它告诉我重要的功能是 12 22 等 下面是我当
  • 我应该怎么做才能从 eclipse - Android 连接到服务器?

    大师们 我对这个话题有点迷失 这是我正在尝试做的事情的细分 用户 Android 设备 将位置信息发送到服务器 gt 服务器 server 返回已使用 sql 排序的项目列表 gt db 服务器 获取表信息并返回给用户 gt 用户 Andr
  • 以编程方式配置 p2 更新存储库

    Eclipse wiki 中有一篇文章如何通过向您的产品添加静态conf 文件来配置 RCP 应用程序的用户 p2 默认存储库 Equinox p2 向 RCP 应用程序添加自我更新 配置用户的默认存储库 http wiki eclipse
  • Angular 2 单元测试 - @ViewChild 未定义

    我正在编写 Angular 2 单元测试 我有一个 ViewChild组件初始化后我需要识别的子组件 在这种情况下 它是一个Timepicker来自 ng2 bootstrap 库的组件 尽管具体细节并不重要 之后我detectChange
  • 如何覆盖 Angular 5 中的组件?

    我有一个组件
  • 有没有办法从 Angular 2+ 中删除未使用的导入和声明? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一些 Visual Studio Code 插件或其他方法可以帮助我们快速有效地整理和组织导入和
  • NodeJs、Mocha 和 Mongoose

    我有以下结构 server db mongooseTest js test userModel test js user userModel js 用他们的代码 猫鼬测试 js var mongoose require mongoose m
  • 解析 Javascript 中自定义格式的“日期和时间”字符串

    我必须解析格式为 2015 01 16 22 15 00 的日期和时间字符串 我想将其解析为 JavaScript 日期对象 对此有什么帮助吗 我尝试了一些jquery插件 moment js date js xdate js 还是没有运气
  • Grails 打包和命名约定

    包装控制器 服务等IE com company controllers com company services 这是一个好的做法还是应该避免 我遇到的另一个值得一提的问题是命名服务示例 SomthingGatewayService gro
  • 在 Android ContentProvider 中连接表和通知 ContentObservers 的最佳实践

    我有一个 ContentProvider 来处理与我的应用程序相关的所有数据插入和检索 我遵循 Virgil Doobjanschi 在 Google I O 上建议的模式 我正在使用第一种模式 我的问题是我有一个由数据库中的多个表表示的逻
  • 动画结束后的 CSS 过渡

    我有一个 css 过渡 可以在悬停时移动元素 还有一个动画 可以在悬停时旋转元素 动画上有一个等于过渡持续时间的延迟 因此在过渡到正确位置后 动画就会开始 它工作得很好 但是 当我们将鼠标移开时 动画会停止 但不会向下过渡 是否可以在鼠标移
  • 从 TypeScript->CommonJS 模块导出带有字体资源的全局样式

    我有一个 TypeScript React 项目 组织如下 tsconfig json package json yarn lock lerna json node modules packages ui library package j
  • 从 rfft2 数组创建 fft2 结果

    我试图通过操作 rfft2 的结果来重新创建完整 fft2 的结果 该文档指出 rfft2 仅计算正系数 因为当输入为实数时 负系数与正系数具有对称性 这对于大型数组非常有用 因为计算 rfft2 比完整的 fft2 快得多 所以下面的代码