Python如何生成任意波形并存为txt
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章主要介绍了Python如何生成任意波形并存为txt,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一. 脚本功能根据采样点数,采
千家信息网最后更新 2024年11月19日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安全错误
数据库的锁怎样保障安全
宁波必达全音网络技术
近五年网络安全大事件
软件开发se是做什么的
tbc怀旧服服务器布鲁部落
服务器异常-9904是啥意思
工业园区进口服务器高质量的选择
网络技术大专学什么
武装突袭服务器技术
软件开发人员的层次
天龙八部都有哪些服务器
南昌软件开发公司厂家价格
公安网络安全管理岗位职责
山东app软件开发哪家便宜
网络安全宣传片如何制作
服务器任务管理器重启服务器
数据库的表结构和关键字
acer服务器管理员
商丘工学院网络安全宣传
数据库图片导出excel
网络安全手抄报高中水彩画
湖北苏够网络技术有限公司
上海综合软件开发活动方案
2017网络安全隐患
sci数据库下载不了吗
社区网络安全知识小组计划书
网络安全提出建议
北京软件开发质量服务
网络安全为了防止医院
别人家的无线网络安全吗
深圳市希柏软件开发