嵩天《Python数据分析与展示》实例4:引力波的绘制 您所在的位置:网站首页 嵩天Python123公众号课程代码 嵩天《Python数据分析与展示》实例4:引力波的绘制

嵩天《Python数据分析与展示》实例4:引力波的绘制

2023-09-11 10:49| 来源: 网络整理| 查看: 265

这一部分讲解的是如何利用已有的数据文件绘制引力波图形,相关讲解见注释,数据文件分别为H1_Strain.wav、L1_Strain.wav、wf_template.txt,可从嵩天老师提供的网址下载:

https://python123.io/dv/grawave.htmlicon-default.png?t=LA92https://python123.io/dv/grawave.html

完整代码如下: 

#实例:引力波的绘制 import numpy as np import matplotlib.pyplot as plt from scipy.io import wavfile #读取波形文件的库 rate_h,hstrain=wavfile.read(r'C:\Users\zhong\Desktop\H1_Strain.wav','rb') #读取波形文件,read()读取的结果分别赋值给速率rate和数值strain rate_l,lstrain=wavfile.read(r'C:\Users\zhong\Desktop\L1_Strain.wav','rb') reftime,ref_H1=np.genfromtxt(r'C:\Users\zhong\Desktop\wf_template.txt').transpose() #读取引力波模型文件,reftime为时间序列,ref_H1为信号的数据,np.genfromtxt()主要执行两个运算循环,第一个循环将文件的每一行转换成字符串序列,第二个循环是将每个字符串转换为相应的数据类型,使用genfromtxt()读取出来的就是两行的矩阵,但这样不方便进行拆分,所以用transpose将其转置,再分别给两个变量赋值 htime_interval=1/rate_h ltime_interval=1/rate_l #分别对两个rate变量求导数得到波形的时间间隔 htime_len=hstrain.shape[0]/rate_h #strain是一个数据矩阵,shape[0]表示读取矩阵的第一维度的长度,也就是数据点的个数,然后除以rate,就可以得到函数在坐标轴上的总长度 htime=np.arange(-htime_len/2,htime_len/2,htime_interval) #为了绘制以原点为中心对称的图像,取负二分之一len为起点,正二分之一len为终点,以interval为时间间隔,创造时间序列htime ltime_len=lstrain.shape[0]/rate_l ltime=np.arange(-ltime_len/2,ltime_len/2,ltime_interval) fig=plt.figure(figsize=(12,6)) #用figure()函数创建一个大小为12*6的绘图空间,其中figsize()用于控制图像大小 plth=fig.add_subplot(221) #分成2行2列的绘图区域并在第1个子绘图区域绘制图形 plth.plot(htime,hstrain,'c') #在plot()函数中,第一个参数为横坐标的取值序列,第二个参数为纵坐标的取值序列,'c'表示使用青绿色绘制曲线 plth.set_xlabel('Time(seconds)') plth.set_ylabel('H1 Strain') plth.set_title('H1 Strain') #画出以时间为x轴,应变数据为y轴的图像,并设置标题和坐标轴的标签 pltl=fig.add_subplot(222) pltl.plot(ltime,lstrain,'y') pltl.set_xlabel('Time(seconds)') pltl.set_ylabel('L1 Strain') pltl.set_title('L1 Strain') pltref=fig.add_subplot(212) pltref.plot(reftime,ref_H1,'r') pltref.set_xlabel('Time(seconds)') pltref.set_ylabel('Template Strain') pltref.set_title('Template') #以完全相同的方法绘制另外两幅图像,分别放置在绘图区域第一列右边和第二列 fig.tight_layout() #自动调整图像外部边缘 plt.savefig(r'C:\Users\zhong\Desktop\Gravitational_Waves_Original.png') #保存图像为png格式 plt.show() plt.close(fig)

期间曾出现一次报错:

TypeError: cannot unpack non-iterable builtin_function_or_method object

检查发现是由于transpose()函数没有加空括号,调整后就没问题了。

参考资料: 嵩天. Python数据分析与展示[EB/OL].https://www.icourse163.org/learn/BIT-1001870002. 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有