python生成任意频率正弦波方式


Posted in Python onFebruary 25, 2020

如下所示:

def signal_xHz(A, fi, time_s, sample):

return A * np.sin(np.linspace(0, fi * time_s * 2 * np.pi , sample* time_s))

A:为信号幅值

fi:为信号频率

time_s:为时间长度(s)

sample:为信号采样频率

补充拓展:Python FFT合成波形实例

使用Python numpy模块带的FFT函数合成矩形波和方波,增加对离散傅里叶变换的理解。

导入模块

import numpy as np
import matplotlib.pyplot as plt
分别是产生一个周期的方波和三角波程序

# 产生size点取样的三角波,其周期为1
def triangle_wave(size):
  x = np.arange(0, 1, 1.0/size)
  y = np.where(x<0.5, x, 0)
  y = np.where(x>=0.5, 1-x, y)
  return x, y
 
def square_wave(size):
  x = np.arange(0, 1, 1.0/size)
  y = np.where(x<0.5, 1.0, 0)
  return x, y

其中np.where函数第二个值是if,第三个是else

下面程序可以计算对应的频谱,采样点数取为2的n次幂是为了便于FFT计算

fft_size = 256
 
# 计算三角波和其FFT
x, y = triangle_wave(fft_size)
fy = np.fft.fft(y) / fft_size

下面对计算的频谱进行可视化,频率对应的强度使用工程上常用的分贝dp来表示

# 绘制三角波的FFT的前20项的振幅,由于不含下标为偶数的值均为0, 因此取
# log之后无穷小,无法绘图,用np.clip函数设置数组值的上下限,保证绘图正确
plt.figure()
plt.plot(np.clip(20*np.log10(np.abs(fy[:20])), -120, 120), "o")
plt.xlabel("frequency bin")
plt.ylabel("power(dB)")
plt.title("FFT result of triangle wave")

下面用正弦和余弦函数合成信号

# 取FFT计算的结果freqs中的前n项进行合成,返回合成结果,计算loops个周期的波形
def fft_combine(freqs, n, loops=1):
  length = len(freqs) * loops
  data = np.zeros(length)
  index = loops * np.arange(0, length, 1.0) / length * (2 * np.pi)
  for k, p in enumerate(freqs[:n]):
    if k != 0: p *= 2 # 除去直流成分之外,其余的系数都*2
    data += np.real(p) * np.cos(k*index) # 余弦成分的系数为实数部
    data -= np.imag(p) * np.sin(k*index) # 正弦成分的系数为负的虚数部
  return index, data

其中index代表频谱空间的采样点

画出合成信号,x坐标使用默认的整数表示即可

# 绘制原始的三角波和用正弦波逐级合成的结果,使用取样点为x轴坐标
plt.figure()
plt.plot(y, label="original triangle", linewidth=2)
for i in [0,1,3,5,7,9]:
  index, data = fft_combine(fy, i+1, 2) # 计算两个周期的合成波形
  plt.plot(data, label = "N=%s" % i)
plt.legend()
plt.title("partial Fourier series of triangle wave")
plt.show()

以上这篇python生成任意频率正弦波方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
如何利用Fabric自动化你的任务
Oct 20 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
Python列表推导式与生成器用法分析
Aug 02 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
Python字符串格式化输出代码实例
Nov 22 Python
python cv2截取不规则区域图片实例
Dec 21 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
Python读写Excel表格的方法
Mar 02 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 Python
python numpy库linspace相同间隔采样的实现
Feb 25 #Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 #Python
基于pygame实现童年掌机打砖块游戏
Feb 25 #Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 #Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 #Python
Python对wav文件的重采样实例
Feb 25 #Python
python实现打砖块游戏
Feb 25 #Python
You might like
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
python扫描线填充算法详解
2020/02/19 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
python中pyqtgraph知识点总结
2021/01/26 Python
英国网上电器商店:Electricshop
2020/03/15 全球购物
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
十八届三中全会个人学习材料
2014/02/13 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
学习型班组申报材料
2014/05/31 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
民间借贷借条如何写
2015/05/26 职场文书