Python如何生成任意波形并存为txt
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了Python如何生成任意波形并存为txt,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一. 脚本功能根据采样点数,采
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
上海睿民互联网科技有限公司
互联网科技官网
深圳互联网科技公司
未来的互联网科技
互联网科技大会
互联网科技类展会
科技伦理 互联网公司
四个字互联网科技公司取名
蓝色互联网科技
互联网还是高科技吗
晓花互联网科技有限公司网址
互联网保险科技创业
2021互联网科技公司排名
黑科技 体验场景 互联网大会
易租星互联网科技有限公司
好易买互联网科技
盐城市攀科互联网科技有限公司
互联网领先科技成果宣传视频
互联网的黑科技实验室
宁波允成互联网科技有限公司
中智农互联网科技
互联网为科技
科技与互联网的利与弊
广州优美互联网科技
中国科技互联网公司收入
世界互联网科技公司市值排名
华夏互联网科技业
崇明区互联网教育科技售后服务
乌鲁木齐新华智原互联网科技学校
互联网金融科技名词解释