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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
python实现windows壁纸定期更换功能
Jan 21 Python
pytorch 修改预训练model实例
Jan 18 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
QML用PathView实现轮播图
Jun 03 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
Python分类测试代码实例汇总
Jul 23 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 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
Search Engine Friendly的URL设计
2006/10/09 PHP
常用的php对象类型判断
2008/08/27 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
JS编程小常识很有用
2012/11/26 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
jquery中取消和绑定hover事件的实现代码
2016/06/02 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
Python中操作mysql的pymysql模块详解
2016/09/13 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
文职个人求职信范文
2013/09/23 职场文书
党员违纪检讨书
2014/02/18 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python