一种直流转交流的代码实现 - through FFT

news2024/11/23 20:08:01
# show how to use FFT, filtered DC signal and return back to SampleValue-time zone.
# the basic concept is coming from ChatGPT.
# Write in python language.
#
# created by twicave.
# Jun09,2023
#
import numpy as np
import matplotlib.pyplot as plt

# 定义正弦信号
# 产生一个包含1000Hz、2000Hz两个正弦波信号和一个直流分量的复合信号
Fs = 20000;
f1 = 1000;
f2 = 2000;
t = np.arange(0, 0.01, 1/Fs);
signal = np.sin(2*np.pi*f1*t) + 0.7*np.sin(2*np.pi*f2*t) + 800;
np.savetxt('signal_data.txt', signal, fmt='%f', delimiter=',');

fig = plt.figure(1, figsize=(8, 10));
plt1 = fig.add_subplot(2, 1, 1)
plt1.plot(t,signal)
plt1.set_xlabel('Time (s)')
plt1.set_ylabel('Amplitude')
plt1.set_title('Original Signal')


# 下面,将对应信号转至频域消除0点后转回时域
x = signal

# 傅里叶变换
X = np.fft.fft(x)  # 计算原始信号的傅里叶变换

# 去除直流分量
X[0] = 0;

# 幅角变换
phase_shift = np.zeros(len(X))
phase_shift[len(X)//2] = -np.angle(X[len(X)//2])
X_corrected = X * np.exp(1j * phase_shift)

# 转回时域
x_withoutDC = np.real(np.fft.ifft(X_corrected));

print(x_withoutDC);
s_corrected = x_withoutDC;

plt2 = fig.add_subplot(2, 1, 2)
plt2.plot(t, s_corrected.real)
plt2.set_xlabel('Time (s)')
plt2.set_ylabel('Amplitude')
plt2.set_title('After filtered the DC of signal')

fig.suptitle("Demo program : filter DC of signal");
fig.show()

注意在频域去除直流信号后,需要对频谱中谱线的幅角做整体位移。你可以尝试把那段幅角变换的代码去除,看看时域信号会变成什么样子。

上面的代码可以直接在python环境中运行,运行结果:

 

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

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

相关文章

【C# 10 和 .NET 6】构建和使用 Web 服务(第16章)

Building and Consuming Web Services 构建和使用 Web 服务 本章介绍如何使用 ASP.NET Core Web API 构建 Web 服务(也称为 HTTP 或 REST 服务),以及如何使用 HTTP 客户端使用 Web 服务,这些客户端可以是任何其他类型的 .NET 应用…

Qt信号和槽

一、定义 信号与槽(Signal & Slot)是 Qt 编程的基础,也是 Qt 的一大创新。因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。 信号(Signal)就是在特定情况下被发…

基于SpringBoot+vue的毕业生信息招聘平台设计和实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

淘宝618每日一猜答案6月12日 源氏木语获得多少个奖项?

淘宝6月12日每日一猜答案是什么?,接下来也会给大家来介绍一下6月12日淘宝大赢家每日一猜的答案。 淘宝每日一猜6月12日答案分享 活动问题:源氏木语获得多少个奖项? 活动答案:【15】 注意是阿拉伯数字! …

20230612 set1打卡

哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

FPGA驱动FT601实现USB3.0相机 OV5640视频采集 提供2套工程源码和QT上位机源码

目录 1、前言2、FT601芯片解读和时序分析FT601功能和硬件电路FT601读时序解读FT601写时序解读 3、我这儿的 FT601 USB3.0通信方案4、vivado工程1--彩条视频采集传输详细设计框图及其原理vivado工程解读 5、vivado工程2--OV5640视频采集传输详细设计框图及其原理vivado工程解读 …

【几分醉意赠书活动 - 04期】 | 《C++、Linux、算法等系列众书》

个人主页: 几分醉意的CSDN博客主页_传送门 个人主页: 陈老板的CSDN博客主页_传送门 赠书活动 | 第四期 本期好书推荐:《C、Linux、算法等系列众书》 粉丝福利:书籍赠送:共计送出30本 参与方式:关注公众号&a…

【MySQL 数据查询】: 基本、分组、排序、聚合、分页、条件查询详解

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL数据查询的讲解(基本、分组、排序、聚合、分页、条件查询) 目录 前言一、基本查询二、条件查询三、聚合函数(统计函数)四、分组查询五、排序查询五、分页查询六、总结 一、基本查询 MySQ…

全网最简单的软渲染器

引言 本文实现了一个包含矩阵变化、光栅化、面剔除、深度测试等功能的软渲染器。所谓软渲染器就是使用 CPU 渲染 3D 模型的程序。因此请记住我们的最终目的:将3D模型显示在屏幕上 。本文分为两个部分:预备知识、渲染器核心实现。预备知识概述了简化的渲…

可以在手机上使用的提醒事项软件有哪些

随着科技的进步,越来越多的人选择使用各种手机软件来提高自己的效率,高效率的手机软件已经成为人们生活和工作中不可或缺的一部分。其中,提醒事项软件是一种非常实用的工具,可以督促用户按时完成任务,有效防止遗忘。 …

chatgpt赋能python:如何利用Python在网上赚钱:一份SEO指南

如何利用Python在网上赚钱:一份SEO指南 随着互联网的快速发展和Python成为一种越来越受欢迎的编程语言,越来越多的人开始利用Python在网上赚取额外的收入。本篇文章将介绍一些Python工具和技术,以及SEO最佳实践,帮助你利用Python…

Spring Boot 回顾

Spring Boot 的发展是很快的,也使用了很多年。但是在工作中,还是发现了很多公司还没有怎么使用 Spring Boot,依旧是在使用 Spring MVC。于是决定复习总结一下。框架的进步和飞跃很重要,但是也不能一味追求新鲜事物,历史…

Yolo算法的演进—YoloCS有效降低特征图空间复杂度(附论文下载)

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:YOLOCS: Object Detection based on Dense Channel Compression for Feature Spatial Solidification (arxiv…

【6.12 代随_55day】判断子序列、不同的子序列

判断子序列、不同的子序列 判断子序列动态规划方法图解步骤代码 不同的子序列1.方法图解步骤代码 判断子序列 力扣连接:392. 判断子序列(简单) 动态规划方法 (这道题也可以用双指针的思路来实现,时间复杂度也是O(n)…

Linux变卡cpu占用高,已装curl、wget但提示命令找不到(挖矿病毒)

现象 服务器变卡,top cpu占用非常高,但是进程占用只有1% 下载安装htop查看 看样子中了挖矿病毒 解决方式 修改/etc/hosts 把dev.fugglesoft.me 指向127.0.0.1 F9 -> enter杀掉进程 又多出来一个执行sh的,修改病毒sh,vi进去随便…

Portraiture5.0滤镜插件中文升级版本下载及功能介绍

专注人像修图,打造完美摄影作品,Portrait5.0是款最新版的人脸图像后期处理软件。它可以帮助用户快速编辑修图,提供全方面的人物美白效果,让用户可以更轻松地修图,操作简单,方便快捷,非常不错。新…

Cilium 如何处理 L7 流量

还记得在 使用 Cilium 增强 Kubernetes 网络安全 示例中,我们通过设置网络策略限制钛战机 tiefighter 访问死星 deathstar 的 /v1/exhaust-port 端点,但放行着陆请求 /v1/request-landing。在提起 Cilium 时,都说其是使用 eBPF 技术推动的用于…

心法利器[85] | 算法技术和职业规划

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

花3万买的大学申请文书,竟和ChatGPT写的一样?

正值高考毕业季,留学出国又成热门话题。眼下,选学校、写申请书是不少学生头等大事。在AI如火如荼的今年,这个老行当却有了新变化。 当学生纷纷用AI写申请书,留学机构开始缩减业务,中介用AI写文书“糊弄”学生&#xf…

哈夫曼树和哈夫曼编码

一.哈夫曼树 1.哈夫曼树 哈夫曼树是一种用于编码的树形结构。它是通过将频率最低的字符反复组合形成的二叉树,使得出现频率高的字符具有较短的二进制编码,而出现频率低的字符具有较长的编码。 在哈夫曼树中,每个叶子节点都代表一个字符&am…