非平稳的地震加速度波视为平稳随机过程和考虑非平稳特性的外包线函数的乘积[1]:
a(t)=f(t)a(t)

其中,t1、t2 分别为控制强震平稳段的首末时刻; c 是衰减因子,控制下降段衰减的快慢; td 表示地震动总持时。一般地,用强震动平稳段的持时 ts 来反应参数 t2 的特性,需满足关系式: ts = t2 - t1。[2] 按该表取值:

本文运用Python进行绘制强度包络函数,后续再分析a(t)的值:
import numpy as np
import matplotlib.pyplot as plt
import math
plt.style.use("classic")
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False
def f(t):
if 0<= t <= 0.63:#t1、t2分别为主震平稳段首末时间
return (t/0.63)**2
elif 0.63 <= t <= 1.34:
return 1
elif 1.34 <= t <= 30:
return math.exp(-0.867*(t-1.34))#c为衰减系数,控制下降段衰减的快慢
#td为地震动总持时
#根据上表可获得某特定震级和震中距下平稳段首末时间
#t1、t2及衰减系数c的取值,进而获得均匀调制函数。
t_range = np.linspace(0, 12, 500)
f_range = [f(t) for t in t_range]
fig, ax = plt.subplots()
line, = ax.plot(t_range, f_range, lw=3)
#by zj-green kunpengxuetang
ax.annotate('强度包络曲线', xy=(2.2, 0.5), xytext=(4, 0.6),
arrowprops=dict(facecolor='red', shrink=0.05),
)
ax.set_xlabel("时间 (s)")
ax.set_ylabel("强度包络曲线")
ax.set_ylim(0,1.25)
plt.show()
#导出文件
with open("data.txt", "w") as file:
for i in range(len(t_range)):
file.write(str(t_range[i]) + " " + str(f_range[i]) + "\n")

但这与文献[3]包络曲线有较大差别:

Python代码为:
import numpy as np
import matplotlib.pyplot as plt
import math
plt.style.use("bmh")
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False
def eps(t):
if 0<= t <= 2.4:
return (t/2.4)**2
elif 2.4 <= t <= 10:
return 1
elif t >10:
return math.exp(0.3*(t-10))
t_range = np.linspace(0, 12, 500)
eps_range = [eps(t) for t in t_range]
plt.figure("包络曲线",(12,8))
plt.plot(t_range, eps_range, linewidth=2, label="包络曲线")
plt.xlabel("时间 (s)", fontsize=14)
plt.ylabel("包络曲线", fontsize=14)
plt.xlim(0,20)
plt.ylim(bottom=0)
plt.show()

不同之处是其衰减因子的关系,文献[2]的衰减因子为负,而文献[3]为正,不知二者是否是相同,后续再做谈论。
参考文献:
[1]代锡军,李坤明.基于Matlab的人工地震波程序编写[J].四川建材,2018,44(09):71-72;
[2]张美玲,李山有,卢建旗,宋晋东,唐丽华.中国大陆地区地震动时程强度包络函数研究[J].地震工程与工程振动,2015,35(04):60-70.DOI:10.13197/j.eeev.2015.04.60.zhangml.007;
[3][日] 大崎顺彦著、田琪译,地震动的谱分析入门[M].地震出版社。