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 相关文章推荐
Python面向对象基础入门之设置对象属性
Dec 11 Python
Python字符串的全排列算法实例详解
Jan 07 Python
Django单元测试工具test client使用详解
Aug 02 Python
python获取引用对象的个数方式
Dec 20 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
Python读写压缩文件的方法
Jul 30 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
PyTorch中的torch.cat简单介绍
Mar 17 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
Codeigniter的一些优秀特性总结
2015/01/21 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
axios基本入门用法教程
2017/03/25 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
详解 Python 读写XML文件的实例
2017/08/02 Python
python使用Tesseract库识别验证
2018/03/21 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
员工晚婚的请假条
2014/02/08 职场文书
委托书如何写
2014/08/30 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python