Python如何生成任意波形并存为txt
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍了Python如何生成任意波形并存为txt,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一. 脚本功能根据采样点数,采
千家信息网最后更新 2025年01月21日Python如何生成任意波形并存为txt
这篇文章主要介绍了Python如何生成任意波形并存为txt,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
一. 脚本功能
根据采样点数,采样周期数等参数以及波形的数学表达式,生成任意波形
将波形数据转为指定位宽的二进制补码,然后存为txt
绘制原始波形和转换为二进制补码后的波形,验证转换是否正确
二. 使用效果
三. 代码分享
'''Author : Xu DakangEmail : XudaKang_up@qq.comDate : 2021-11-19 19:12:31LastEditors : Xu DakangLastEditTime : 2021-11-21 21:36:19Filename :Description :''''''模块功能:1.根据采样点数,采样周期数等参数以及波形的数学表达式,生成任意波形2.将波形数据转为指定位宽的二进制补码,然后存为txt3.绘制原始波形和转换为二进制补码后的波形,验证转换是否正确'''import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.pylab import mplmpl.rcParams['font.sans-serif'] = ['SimHei'] #显示中文mpl.rcParams['axes.unicode_minus'] = False #显示负号import mplcursorsimport timenow_time = time.strftime("%Y%m%d-%H%M%S", time.localtime(time.time()))# 我的自编模块import myBin2dec2hex#! 需要变更的参数file_name = 'waveform-' + now_timeN = 250 # 一个周期的采样点数,采样频率Fs = 信号频率f * 采样点数NTNUM = 10 # 采样周期数BIT_WIDTH = 24 # 二进制补码位数f = 0.5 # 正弦信号的频率,可任意取值t0 = np.linspace(0, 1 / f, N) # np.linspace(开始, 结束, 个数),注意开始点会被包含,结束点可能被包含(如果能整除的话)pi = np.pi#! 更改y0的表达式以获得任意波形# 正弦函数公式 y = sin(wt) = sin(2πft)y0 = np.sin(2 * pi * f * t0) + np.sin(2 * pi * f * 2 * t0)# y0 = np.sin(2 * pi * f * t0)#! 原始波形周期延拓,并绘制出延拓后的波形x0_tnum = []y0_tnum = []y0_bit_tnum = []for i in range(TNUM): for j in t0: x0_tnum.append(j + i * 1 / f) for k in y0: y0_tnum.append(k)plt.figure(1)plt.subplot(2, 1, 1)plt.plot(x0_tnum, y0_tnum)plt.grid()plt.title('原始波形,最小频率 = ' + str(f) + '对应周期为' + str(1/f) + ',周期数 = ' + str(TNUM) + ',采样频率 = ' + str(f * N))mplcursors.cursor() # 使得可以在图像上取点#! 原始波形小数乘以二进制放大倍数再取整y0_bit = np.int0((2**(BIT_WIDTH - 1) - 1) * y0 / max(abs(y0)))y0_bit_tnum = []for i in range(TNUM): for j in y0_bit: y0_bit_tnum.append(j)#! 将10进制转2进制补码,再存入txt文件中fotxt = ''fo = open(file_name + '.txt', 'w', encoding='utf8')for dec_num in y0_bit_tnum: # 不包括最后一个数 fotxt += myBin2dec2hex.signed_dec2bin(dec_num, BIT_WIDTH)[2:] + '\n'fo.write(fotxt[:-1])print('生成' + file_name + '.txt文件成功!')fo.close()#! 读取写入的txt文件,转为10进制并画出波形,以验证写入是否正确fi = open(file_name + '.txt', 'r', encoding='utf8')y_out = []for line in fi.readlines(): y_out.append(myBin2dec2hex.signed_bin2dec(line))fi.close()x_out = list(range(len(x0_tnum)))plt.figure(1)plt.subplot(2, 1, 2)plt.plot(x_out, y_out)plt.grid()plt.title('先转二进制补码再转10进制后波形, 相当于十进制值乘以2^' + str(BIT_WIDTH - 1) + ' - 1即' + str('{:e}'.format(2**(BIT_WIDTH - 1) - 1)))mplcursors.cursor()plt.show()
感谢你能够认真阅读完这篇文章,希望小编分享的"Python如何生成任意波形并存为txt"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
波形
二进制
周期
补码
生成
原始
频率
点数
篇文章
进制
参数
文件
表达式
验证
个数
信号
功能
数学
数据
模块
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库管理软件 参数
浙江专业软件开发靠谱吗
小米路由器服务器搭建
导火线下载软件开发
网络安全 保障网络数据的 能力
成人教育平台软件开发
现代水产养殖网络技术
软件开发政府补贴标准
浙江机械软件开发市场报价
成都手机麻将软件开发公司
浪潮服务器的amm管理地址
上网出现网络安全管理系统
比较好的网络安全杂志
pymysql显示数据库表
西数 服务器管理面板
erp服务器是什么样子的图片
数据库io是网络io吗
魔兽世界怀旧新开服务器哪里通知
科技互联网公司和其他行业融合
cvi ado 数据库
服务器系统占比
国内领先的私募数据库
linux 重启服务器
数据库账号密码查询语句
济南择万网络技术有限公司
泉州帮家富网络技术有限公司
网络技术应用理论
oracle数据库的ed
腾讯云服务器如何选择安全组
告全区卷烟零售户网络安全书