python绘制引力波

使用python绘制引力波

经过不懈的努力人们终拿到了黑洞的照片,但是是否还记得之前人们人们发现的引力波吗?想不想自己手绘一个引力波的图形呢?

接下来就手把手教你绘制一个引力波的图像。

绘制引力波最重要的是要有数据源,可以从下面的网址下载我们所需要的数据

数据源

从这个链接,把下面的这些文件下载下来。

引力波数据文件

需要使用的python库

numpy
matplotlib
scipu.io 

接下来就是代码的编写了,新建一个文件,命名为wave.py,然后使用下面的代码

    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.io import wavfile
     
    rate_h, hstrain= wavfile.read(r"H1_Strain.wav","rb")
    rate_l, lstrain= wavfile.read(r"L1_Strain.wav","rb")
    #reftime, ref_H1 = np.genfromtxt('GW150914_4_NR_waveform_template.txt').transpose()
    reftime, ref_H1 = np.genfromtxt('wf_template.txt').transpose() #使用python123.io下载文件
     
    htime_interval = 1/rate_h
    ltime_interval = 1/rate_l
    fig = plt.figure(figsize=(12, 6))
     
    # 丢失信号起始点
    htime_len = hstrain.shape[0]/rate_h
    htime = np.arange(-htime_len/2, htime_len/2 , htime_interval)
    plth = fig.add_subplot(221)
    plth.plot(htime, hstrain, 'y')
    plth.set_xlabel('Time (seconds)')
    plth.set_ylabel('H1 Strain')
    plth.set_title('H1 Strain')
     
    ltime_len = lstrain.shape[0]/rate_l
    ltime = np.arange(-ltime_len/2, ltime_len/2 , ltime_interval)
    pltl = fig.add_subplot(222)
    pltl.plot(ltime, lstrain, 'g')
    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)
    pltref.set_xlabel('Time (seconds)')
    pltref.set_ylabel('Template Strain')
    pltref.set_title('Template')
    fig.tight_layout()
     
    plt.savefig("Gravitational_Waves_Original.png")
    plt.show()
    plt.close(fig)

欢迎关注公众号,获取更多有趣信息

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34246164/article/details/89295487