新旧torch中傅里叶变换实现(fft)

由泰勒级数我们知道,一个函数可以被分解成无穷个幂函数叠加的形式,于是同样地,一个周期函数也可以被分解成多个周期函数叠加,于是自然而然地,三角函数符合这个需求,由傅里叶级数我们可以将周期函数分解成无穷个三角函数叠加的形式,以下是具体的定义:
在这里插入图片描述

# a, b 均为一个2维tensor

# torch 1.8 之前(旧)
def ccorr(a, b):
    aa = torch.rfft(a, 1)
    bb = torch.rfft(b, 1)
    m = com_mult(conj(aa), bb)
    out = torch.irfft(m, 1, signal_sizes=(a.shape[-1],))
    return out

# torch 1.8 及1.8 之后(新)
def ccorr(a, b):
    aa = torch.fft.rfft2(a, dim=(-2, -1))
    aaa = torch.stack((aa.real, aa.imag), -1)
    bb = torch.fft.rfft2(b, dim=(-2, -1))
    bbb = torch.stack((bb.real, bb.imag), -1)
    m = com_mult(conj(aaa), bbb)
    cor_m = aa * bb.conj()
    # ifft 仅包含实部 irfft包含实部和虚部
    out = torch.fft.irfft2(torch.complex(m[..., 0], m[..., 1]), a.size())
    correlation = torch.fft.irfft2(cor_m, a.size())
    return out

相关推荐

  1. FFT快速变换音频分析

    2024-06-17 07:46:02       43 阅读
  2. 实验五:图像变换

    2024-06-17 07:46:02       25 阅读
  3. 变换例题

    2024-06-17 07:46:02       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 07:46:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 07:46:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 07:46:02       82 阅读
  4. Python语言-面向对象

    2024-06-17 07:46:02       91 阅读

热门阅读

  1. python 异常处理、随机数、

    2024-06-17 07:46:02       32 阅读
  2. AI学习指南机器学习篇-KNN算法实现

    2024-06-17 07:46:02       31 阅读
  3. linux 搭建一台自己的DNS服务器

    2024-06-17 07:46:02       34 阅读
  4. [AIGC] 选择LeetCode刷题的编程语言

    2024-06-17 07:46:02       34 阅读
  5. 比特币通用API服务

    2024-06-17 07:46:02       27 阅读
  6. Flink Watermark详解

    2024-06-17 07:46:02       26 阅读
  7. 矩阵补全IGMC 学习笔记

    2024-06-17 07:46:02       24 阅读
  8. ComfyUI

    ComfyUI

    2024-06-17 07:46:02      24 阅读
  9. 外键的基本概念

    2024-06-17 07:46:02       25 阅读
  10. C++多态

    2024-06-17 07:46:02       27 阅读