傅里叶变换原理解析

傅里叶变换原理解析

震动频率:节拍数/秒
矢量旋转频率:圈/秒

傅里叶频域就是:音频信号波形以不同的频率旋转形成的图形的质心的坐标变化,即(frequency, (x,y))
(其中实数为x轴坐标,虚部为 y轴坐标)

为什么傅里叶变换可以分离不同频率的信号?
因为,当对复合信号进行傅里叶变换时,当信号波形在轴上以不同的频率旋转时,比如该信号由a,b,c三个频率的正弦波信号复合而成,当复合信号的波形的旋转频率为a,b,c三个频率的时候,旋转图形的质心的横坐标达到峰值(极大值),所以我们只要在旋转得到的(频率,坐标)图像中找到峰值所在的频率就可以得到所有复合信号的频率。

傅里叶反变换的原理:
就是将(频率,坐标)这样的二维波形,进行傅里叶变换(矢量旋转),就可以得到原始信号。

傅里叶变换公式的原理:

  • 旋转的矢量:对应的是一个复数
    • 每秒旋转一周的速度,这个旋转矢量表达式为: e(2∗π∗i∗t)e^{(2 * \pi * i * t)}e(2πit)
    • 我们再加上旋转的频率f,表示这个矢量每秒实际上旋转几周
    • 那么,这个旋转矢量的表达式为 e(2∗π∗i∗t∗f)e^{(2 * \pi * i * t * f)}e(2πitf)
    • 傅里叶变换的矢量旋转方向时顺时针的,所以,我们需要在指数上加一个负号:e−(2∗π∗i∗t∗f)e^{-(2 * \pi * i * t * f)}e(2πitf)
  • 为了表示我们的原始信号以这样的频率进行旋转,我们可以直接用我们的信号与这样的旋转矢量表达式相乘:
    • g(t)(时域信号)
    • g(t)×e−(2∗π∗i∗t∗f)g(t) \times e^{-(2 * \pi * i * t * f)}g(t)×e(2πitf)
  • 接下来就是计算旋转波形图的质心,我们可以进行一个估计:对图形进行抽样,选取n个样本点,我们将样本点的横坐标加起来,再除以样本点数量n(基本的中心点计算方法)
    • 以这种思想,为了更加精确,我们可以将计算平均值改变为计算时间点上的积分:
      ∫t1t2f(g(t)×e−(2∗π∗t∗i∗f))dt\int_{t_1}^{t_2} f(g(t) \times e^{-(2*\pi*t*i*f)})dtt1t2f(g(t)×e(2πtif))dt

如果信号的持续时间很长,那么旋转矢量的模长就会被放大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(pytorch-深度学习系列)pytorch数据操作

pytorch数据操作 基本数据操作,都详细注释了,如下: import torch#5x3的未初始化的Tensor x torch.empty(5, 3) print("5x3的未初始化的Tensor:") print(x) print("******************************")#5x3的随机初始化的…

(pytorch-深度学习系列)pytorch中backwards()函数对梯度的操作

backwards()函数对梯度的操作 对于一个新的tensor来说,梯度是空的;但当对这个tensor进行运算操作后,他就会拥有一个梯度: x torch.ones(2, 2, requires_gradTrue) print(x) print(x.grad_fn)y x 2 print(y) print(y.grad_fn)…

(pytorch-深度学习系列)pytorch实现线性回归

pytorch实现线性回归 1. 实现线性回归前的准备 线性回归输出是一个连续值,因此适用于回归问题。回归问题在实际中很常见,如预测房屋价格、气温、销售额等连续值的问题。 与回归问题不同,分类问题中模型的最终输出是一个离散值。我们所说的图…

(pytorch-深度学习系列)pytorch线性回归的便捷实现

pytorch线性回归的便捷实现 继上一篇blog,使用更加简洁的方法实现线性回归 生成数据集: num_inputs 2 num_examples 1000 true_w [2, -3.4] true_b 4.2 features torch.tensor(np.random.normal(0, 1, (num_examples, num_inputs)), dtypetorch.f…

(pytorch-深度学习系列)pytorch实现对Fashion-MNIST数据集进行图像分类

pytorch实现对Fashion-MNIST数据集进行图像分类 导入所需模块: import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt import time import sys对数据集的操作(读取数据集)&#…

(pytorch-深度学习系列)使用softmax回归实现对Fashion-MNIST数据集进行分类-学习笔记

使用softmax回归实现对Fashion-MNIST数据集进行分类 import torch from torch import nn from torch.nn import init import numpy as np import sys读取数据集: mnist_train torchvision.datasets.FashionMNIST(root~/Datasets/FashionMNIST, trainTrue, downlo…

(pytorch-深度学习系列)pytorch实现多层感知机(手动定义模型)对Fashion-MNIST数据集进行分类-学习笔记

pytorch实现多层感知机对Fashion-MNIST数据集进行分类(手动定义模型) 多层感知机: 多层感知机在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。隐藏层位于输入层和输出层之间。 输入和输出个数分别为4和…

(pytorch-深度学习系列)pytorch实现多层感知机(自动定义模型)对Fashion-MNIST数据集进行分类-学习笔记

pytorch实现多层感知机(自动定义模型)对Fashion-MNIST数据集进行分类 导入模块: import torch from torch import nn from torch.nn import init import numpy as np定义数据集: class FlattenLayer(nn.Module): # 定义一个ten…

(pytorch-深度学习系列)pytorch避免过拟合-权重衰减的实现-学习笔记

pytorch避免过拟合-权重衰减的实现 首先学习基本的概念背景 L0范数是指向量中非0的元素的个数;(L0范数难优化求解) L1范数是指向量中各个元素绝对值之和; L2范数是指向量各元素的平方和然后求平方根。 权重衰减等价于 L2范数正则化(regular…

(pytorch-深度学习系列)pytorch避免过拟合-dropout丢弃法的实现-学习笔记

pytorch避免过拟合-dropout丢弃法的实现 对于一个单隐藏层的多层感知机,其中输入个数为4,隐藏单元个数为5,且隐藏单元hih_ihi​(i1,…,5i1, \ldots, 5i1,…,5)的计算表达式为: hiϕ(x1w1ix2w2ix3w3ix4w4ib…

(pytorch-深度学习系列)正向传播与反向传播-学习笔记

正向传播与反向传播 1. 正向传播 正向传播是指对神经网络沿着从输入层到输出层的顺序,依次计算并存储模型的中间变量(包括输出)。 假设输入是一个特征为x∈Rd\boldsymbol{x} \in \mathbb{R}^dx∈Rd的样本,且不考虑偏差项&#x…

(pytorch-深度学习系列)简单实现kaggle房价预测-学习笔记

实现kaggle房价预测 导入所需模块: %matplotlib inline import torch import torch.nn as nn import numpy as np import pandas as pdprint(torch.__version__) torch.set_default_tensor_type(torch.FloatTensor)读取数据集: (具体以自己…

(pytorch-深度学习系列)ResNet残差网络的理解-学习笔记

ResNet残差网络的理解 ResNet伴随文章 Deep Residual Learning for Image Recognition 诞生,该文章是MSRA何凯明团队在2015年ImageNet上使用的网络,在当年的classification、detection等比赛中,ResNet均获了第一名,这也导致了Res…

(pytorch-深度学习系列)pytorch构造深度学习模型-学习笔记

pytorch构造深度学习模型 1. 通过继承module类的方式来构造模型 Module类是nn模块里提供的一个模型构造类,是所有神经网络模块的基类。 可以继承基类并重构 __init()__函数和forward()forward()forward()函数的方式来构造模型。 以下是一个构造一个模型的例子&am…

(pytorch-深度学习系列)模型参数的初始化与访问操作-学习笔记

模型参数的初始化与访问操作 学习 如何初始化以及访问模型参数,以及如何在多层之间共享模型参数 首先定义一个含有单个隐藏层的多层感知机,使用默认方式初始化该模型的参数,并且进行一次前向计算: import torch from torch impo…

(pytorch-深度学习系列)pytorch实现自定义网络层,并自设定前向传播路径-学习笔记

pytorch实现自定义网络层,并自设定前向传播路径-学习笔记 1. 不包含模型参数的自定义网络层 首先我们自定义一个网络层, 定义一个网络层,使其不包含模型参数,并在forward()函数中进行运算: import torch from torc…

(pytorch-深度学习系列)读取和存储数据-学习笔记

读取和存储数据 我们可以使用pt文件存储Tensor数据: import torch from torch import nnx torch.ones(3) torch.save(x, x.pt)这样我们就将数据存储在名为x.pt的文件中了 我们可以从文件中将该数据读入内存: x2 torch.load(x.pt) print(x2)还可以存…

(pytorch-深度学习系列)pytorch使用GPU计算-学习笔记

pytorch使用GPU计算 在之前的blog中早已经讲过如何配置pytorch的GPU加速环境 查看GPU加速是否可用: import torch from torch import nnprint(torch.cuda.is_available()) # true 查看GPU是否可用print(torch.cuda.device_count()) #GPU数量, 1torch.…

(pytorch-深度学习系列)CNN二维卷积层-学习笔记

二维卷积层 在二维互相关运算中,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口中的输入子数组与核数组按元素相乘并求和,得到输出数组中相应…

(pytorch-深度学习系列)卷积神经网络中的填充(padding)和步幅(stride)

卷积神经网络中的填充(padding)和步幅(stride) 之前写过一篇blog,描述CNN网络层的输入和输入尺寸的计算关系,但是并没有描述的很全面,这里全面描述了影响输出尺寸的两个超参数padding和stride,查阅了相关资料,编码理解…