python绘制地震动傅里叶谱

本文详细介绍了地震动的傅里叶变换与逆变换,阐述了快速傅里叶变换(FFT)在Python中的应用,并提供了相关代码。傅里叶谱振幅与快速傅里叶变换结果之间的关系被解析,强调了频率、相位的计算以及傅里叶积分在处理非周期现象中的重要性。

先说结论

快速傅里叶变换结果为 y k y_k yk,我们需要的傅里叶谱振幅为 F k F_k Fk,二者的关系如下
F k = Δ t ⋅ ∣ y k ∣ F_k =\Delta t\cdot|y_k| Fk=Δtyk
需要注意: F 0 = Δ t / 2 ⋅ ∣ y 0 ∣ F_0 = \Delta t/2\cdot|y_0| F0=Δt/2y0 F N / 2 = Δ t / 2 ⋅ ∣ y N / 2 ∣ F_{N/2} = \Delta t/2\cdot|y_{N/2}| FN/2=Δt/2yN/2

python代码

import numpy as np
from scipy.fft import fft


def fourier(ag, dt):
    n = len(ag) - 1
    fw = fft(ag)
    i_half = n // 2
    fw_half = fw[:i_half + 1]  # 取单边频谱
    ampl = np.abs(fw_half) * dt  # 幅值
    ampl[0] = 0.  # 直流分量置零
    ampl[-1] = ampl[-1] / 2
    freq = np.linspace(0, 1 / (2 * dt), i_half + 1)
    return ampl, freq

原因

1 地震动的傅里叶变换与逆变换

地震动 x m x_m xm是离散值,傅里叶逆变换为
x m = A 0 2 + ∑ k = 1 N / 2 − 1 [ A k cos ⁡ 2 π k m N + B k sin ⁡ 2 π k m N ] + A N / 2 2 cos ⁡ 2 π ( N / 2 ) m N (1) x_m=\frac{A_{0}}{2}+\sum_{k=1}^{N / 2-1}\left[A_{k} \cos \frac{2 \pi k m}{N }+B_{k} \sin \frac{2 \pi k m}{N }\right]+\frac{A_{N / 2}}{2} \cos \frac{2 \pi(N / 2) m}{N }\tag{1} xm=2A0+k=1N/21[AkcosN2πkm+BksinN2πkm]+2AN/2cosN2π(N/2)m(1)
傅里叶变换为
A k = 2 N ∑ m = 0 N − 1 x m cos ⁡ 2 π k m N k = 0 , 1 , 2 , ⋯   , N 2 − 1 , N 2 (2) A_{k}=\frac{2}{N} \sum_{m=0}^{N-1} x_{m} \cos \frac{2 \pi k m}{N} \quad k=0,1,2, \cdots, \frac{N}{2}-1, \frac{N}{2}\tag{2} A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酒桶在你野区

感谢支持!????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值