序列傅里叶变换

news2024/11/19 6:42:10

序列傅里叶变换定义

序列傅里叶变换 (DFT) 是一种数学变换,它将一个有限长度的序列转换为其频谱表示。它使用一个复数数组表示序列的频谱,其中每个元素表示对应的频率成分的幅度和相位。

DFT 的公式为:

X[k] = ∑n=0 to N-1 x[n] * e^(-j2πkn/N)

其中,X[k] 是序列 x 的 DFT,x[n] 是序列 x 的第 n 个元素,N 是序列 x 的长度,k 是 DFT 的索引,e 是自然对数的底数。

DFT 可以用来分析序列中不同频率分量的幅度和相位,并且可以用来进行频域信号处理,例如降噪、滤波和提升信噪比等。

 Python实现序列傅里叶变换:

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 1, 2, 3, 1, 2, 3]
X = np.fft.fft(x)
# 计算序列 x 的频率范围
N = len(x)
f = np.linspace(0, 1, N)

# 绘制序列 x 的频谱图
plt.plot(f, np.abs(X))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.show()

 离散信号傅里叶变换的性质

离散信号傅里叶变换 (DFT) 是一种用来将时域信号转换为频域信号的工具。在数学上,DFT 定义为将一个序列 x[n] 的每个时间点转换为一个复数,使得这个序列能够被表示为一个幅度和相位的波形。

 python证明离散傅里叶线性性质:

import numpy as np
import matplotlib.pyplot as plt

# 建立信号 x[n] 和 y[n]
x = np.array([1, 2, 3, 4])
y = np.array([5, 6, 7, 8])

# 计算 x[n] 和 y[n] 的 DFT
X = np.fft.fft(x)
Y = np.fft.fft(y)

z = x + y
Z = np.fft.fft(z)
N2 = len(z)
f2 = np.linspace(0, 1, N2)

W = X + Y
f3 = np.linspace(0, 1, N2)

# 绘制序列 z 的频谱图
plt.plot(f2, np.abs(Z))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('DFT(x+y)')
plt.show()
plt.plot(f3, np.abs(W))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('DFT(x)+DFT(y)')
plt.show()

 观察上图发现图像相同。

Python实现信号时移:

import numpy as np
import matplotlib.pyplot as plt

# 建立单位冲击信号 x[n]
x = np.zeros(10)
x=[1,2,3,4,5]

# 计算 x[n-k0]
k0 = 3
y = np.concatenate((x[k0:], x[:k0]))

# 绘制 x[n] 和 x[n-k0] 的图像
plt.plot(x, label='x[n]')
plt.plot(y, label='x[n-k0]')
plt.legend()
plt.show()

np.concatenate 函数可以用来将多个数组拼接在一起。

在上述代码中,x[k0:] 表示从第 k0 个元素开始到最后一个元素的所有元素组成的数组,x[:k0] 表示从第一个元素到第 k0-1 个元素的所有元素组成的数组。 x为 [1, 2, 3, 4, 5],k0 为 3,则 x[k0:][3, 4, 5]x[:k0][1, 2]

将两个数组拼接起来,即得到了时移后的序列 x[n-k0]。如果 x 为 [1, 2, 3, 4, 5],k0为 3,则 x[n-k0] 为 [3, 4, 5, 1, 2]

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

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

相关文章

Unreal UCLASS常用的类标记宏

BlueprintType,使当前类可以作为蓝图中的类型使用。新建一个继承UObject的C类CustomObject:UObject默认是无法作为蓝图中的类型使用的,打开关卡蓝图,声明一个CustomObject变量:可以看到,这里无法声明CustomObject类型的变量,我们为CustomObject添加BlueprintType标记宏:这样我们…

我的2022,为什么要跳出舒适圈?

1前言今天的冬日暖阳高照,给我羽绒服下的肉身火一般的燥热,给了我一个错觉,以为到了阳春三月。刚刚送完老妈还有老婆孩子回老家,我坐到电脑机器前,准备捋一下思绪,回首2022的生活和工作。 2 2022 回顾今年用…

从零开始搭建Dubbo环境并整合Dubbo+SpringBoot

Windows环境搭建 1. 安装Zookeeper 下载 zookeeper3.5 下载地址 https://zookeeper.apache.org/releases.html#download 下载完成以后, 解压到一个目录下 然后把 zoo_sample.cfg 复制一份, 重命名为 zoo.cfg 修改配置文件 zoo.cfg 中的 dataDir 这个配置 修改为 dataDir../z…

pygame - 图片移动优化 - 引入面向对象思想

目录 一、基本框架 二、代码段 1、附注释 2、无注释 三、效果展示 备注:pygame - 图片移动优化中未对属性和方法进行封装,本篇文章将引入面向对象思想 一、基本框架 import sys import time import pygamepygame.init()SCREEN_WIDTH 680 SCREEN…

基于机器学习预测销售门店的商品销量详细教程

项目概述: 使用时间序列预测来预测来Corporacin Favorita 的数据的商店销售额。 具体来说,构建一个模型来更准确地预测在不同 Favorita 商店销售的数千种商品的单位销售额。您将使用包含日期、商店和商品信息、促销和单位销售的易于理解的训练数据集来练习您的机器学习技能。…

【debug日记】安装包后还是有下划线可以运行、gensim包的安装及版本不同引起的参数不匹配问题

文章目录gensim包版本不同引起的参数不匹配问题安装gensim包后还是有下划线可以运行gensim包的安装问题今天的debug历程可谓一步一个坑。首先我去github上下载了一个项目,关于graph embedding https://github.com/shenweichen/GraphEmbedding 我下载下来直接运行&a…

软件测试 -- 进阶 10 常见软件测试类型

业精于勤,荒于嬉;行成于思,毁于随。-- 韩愈 释译:学业因勤奋而专精,因玩乐而荒废;德行因独立思考而有所成就,因因循随俗而败坏。 是否执行程序/测试执行方法 - 静态测试 - 动态测试 …

如何简单的做量化交易

介绍 首先我不是量化工程师,我只是个后端工程师;其次我对量化也不感兴趣,自己有几把刷子还是了解的,自己不适合做量化交易: 自己没有优秀的模型设计能力自己是个长线投资,一般一个股票都是至少拿一年以上…

【五】Netty 传输Java对象

Netty 传输Java对象介绍业务场景模拟流程图代码展示订购采购消息 POJO 类订购应答消息 POJO 类服务端启动类 SubscribeReqServer服务端业务处理类 SubscribeServerHandler客户端启动类 SubscribeClient客户端 业务处理类 SubscribeClientHandler效果展示服务端打印客户端打印总…

20230109网安陈之琳材料大纲-web渗透

目录 引言 正文 信息收集 端口扫描 敏感目录的扫描 主机漏洞扫描 常见的漏洞及防御 SQL注入漏洞 目录遍历漏洞/文件包含漏洞 提权 删日志 引言 首先呢,经过我本人对此篇论文的研读,发现此篇论文属于web方向的一篇入门文章 梁本来前辈对常见…

使用Docker Compose一键部署前后端分离项目

目录 一、安装Docker和docker Compose (1)Docker安装 (2)Docker Compose安装 (3)查看版本信息 二、准备工作 1. 新建工作目录 2. 工作目录结构 3. 后台打包 4. 前台打包 5. 数据库文件上传 6. 编…

Nginx反向代理和负载均衡配置

一.什么是反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就…

Sentinel-限流 冷启动

概述 当流量突然增大的时候,我们常常会希望系统从空闲状态到繁忙状态的切换的时间长一些。即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。Warm U…

在Mac上配置Vue开发环境

因为Vue是NodeJS的模块,要想使用Vue需要先安装NodeJS 在Mac中安装NodeJS通过brew包管理器就会很方便, 因为访问源速度问题建议使用5(阿里),Homebrew开源项目地址:https://gitee.com/cunkai/HomebrewCN/blob/master/REA…

千锋教育+计算机四级网络-计算机网络学习-02

目录 分组交换的两种传输方式 数据报方式 ​编辑 虚电路方式 OSI参考模型 IP地址分类 公有IP 私有IP 回环ip地址 子网掩码 端口 端口号 端口分类 数据包的组装、拆解 网络应用程序开发流程 选择合适的协议(TCP或UDP) TCP—面向连接 UDP—面向无连接 …

第八章面向对象编程(中级)

8.1访问修饰符 8.1.1基本介绍 java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围): 公开级别:用 public 修饰,对外公开受保护级别:用 protected 修饰,对子类和同一个包中的类公开…

基于Docker安装Nginx

基于Docker安装Nginx 1.安装Nginx 先启动一个 Nginx 实例, 可以得到相关配置 1.这里我将安装的软件放在/mydata目录下 #进入mydata目录 cd mydata/ #创建nginx目录 mkdir nginx # 拉取nginx 1.10版本镜像并允许容器 docker run -p 80:80 --name nginx -d nginx:1.10将容器内…

RHCE第四天之Web服务器详解

文章目录一、网址及HTTP简介二、www服务器的类型三、 www服务器的基本配置四、基于https协议的静态网站五、实验练习web服务器提供的数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我…

Profiler导致的严重性能问题

背景客户反馈系统突然运行非常缓慢,持续了近20分钟的时间,通过SQL专家云定位到有人开启了Profiler导致,但是不能定位是谁开启的,请我们协助分析。现象登录SQL专家云,进入实时可视化页面,在活动会话中看到在…

【Ctfer训练计划】——(十)

作者名:Demo不是emo主页面链接: 主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…