震度計算で気象庁から提示されているのは以下のリンクになります。
https://www.data.jma.go.jp/eqev/data/kyoshin/kaisetsu/calc_sindo.html
じゃ、近似計算でどの程度近似なのかをちょっと考察、
計算方法は① 加速度波形を周波数軸に変換(実質FFT)して、② 重み付けを行ない、さらに③ それを周波数に変換(実質IFFT)して、④ 0.3秒以上継続する値の最小値を求めて⑤ 震度計算式(対数目盛)で求めた値を四捨五入と切り捨てで震度とする、というステップになりますが、
近似計算と気象庁提示の差分のポイントは、②の周波数重み付けに差があります、このフィルターの特性は建物や構造物への影響度を考慮したものだと思われます
近似計算方式では、ハイカット側はデジタル処理ではなくて、以下の回路図で加速度計に付加されているキャパシタ(0.1μF)で一次のカットオフ周波数30Hzぐらい(デフォルトでは内蔵の3300pFでカットオフ800Hzを変化させている、一方ロー側は格段の処理はされていない模様
コード(以下のリンク)でフィルター処理のコメントありますが、実質は平滑処理になってます
https://github.com/p2pquake/rpi-seismometer/blob/master/seismic_scale.py
とはいえ、FFTを使って計算するのとそれほどの差があるわけでもなさそうだから、実用的には十分じゃないかというところで、正確に震度を求めようとすると計測器を設置する工事だけでも大変なのだから
P.S. pythonでnumpyの機能にあるFFTを実行してみると、
M1 Macとラズパイzeroでの速度比較
<用意したデータ>
sampling_rate = 2000 # サンプリング周波数(Hz)
T = 1 / sampling_rate # サンプリング間隔
t = np.arange(0, 1.0, T) # 時間ベクトル
# 信号生成(50Hzと120Hzのサイン波を重ねたもの)
f1 = 100 # Hz
f2 = 300 # Hz
signal = np.sin(2*np.pi*f1*t) + 0.5*np.sin(2*np.pi*f2*t)
<実行速度>
M1 Mac: np.fft.fft: 0.000027 [sec]
ラズパイゼロ: np.fft.fft: 0.001830 [sec]
ふーむ、およそ60倍ぐらい違うか、想定範囲だけど
ラズパイzeroでもフレーム周期5msでできなくはなさそうなレベル
admin