地震监测系统

简介: 地震监测系统

地震监测系统主要是利用地震检波器收集到的地壳运动信息,从而预测和确定地震的震中以 及强度 。

a2875ca7afa44f2c8b4541f7b87fcd7c.png


预测方法

地震检波器每隔固定的时间间隔采样一次预测地震的能量数据,并保存到文件中,地震监测系统会从文件中读取相应的能量数据,测试在给定的时间点上,一个短时间窗口内的取样值与一个长时间窗口内取样值的商,如果这个比例高于给定的阈值,那么在这个事件点上极有可能发生地震。取样方法:无论短/长时间内的取样值都是使用给定点能量数据的平方加上该点之前的一小部分点能量值的平方之和再求平均值


如: 某个时间点的及之前的 7 个能量数据如下,时间间隔是: 0.01 秒, 短时间周期取 2 个点,长时间周期取 5 个点:

f983a218bec34b82b6d81c8602c2b7ec.png


则:    短时间窗口内的取样值:     (5x5 + 4x4 + 2x2) / 3 = 15

长时间窗口内的取样值: (5x5 + 4x4 + 2x2 +1x1 + 1x1) / 5 = 9


具体开发需求

1.问题描述:


使用数据文件中的一组地震检波器测量值确定可能的地震事件的位置。

2. 输入输出描述:


程序的输入是名为seismic.dat的数据文件和用于计算短时间能量和长时间能量的取样值的数目。输出是给出关于潜在的地震事件次数的报告。

seismic.dat 的结构是这样的,第一行包含两个值: 地震检波器能量值的数目和时间间隔,从第二行开始就是能量值的数据,以空格分开

短时间窗口和长时间窗口的值可以由键盘读入

判定地震事件给定的阀值是 1.5


seismic.dat 中的数据如下:


11          0.01


1     2     1     1     1     5     4     2     1     1     1

算法设计:


1) 读取文件头并分配内存;


2) 从数据文件读取地震数据,从键盘读取计算能量的短时间和长时间窗口测量 值的数目;


3) 计算各个时间点上的短时间窗口和长时间窗口的能量值,打印出可能的地震 事件时间,在这里,因为会涉及到频繁调用短时间窗口和长时间窗口的能量值, 我们可以将计算能量值设计为单独的一个函数


代码实现:

#include <iostream>
#include <Windows.h>
#include <string>
#include <fstream>
#include <cmath>
using namespace std;
#define THRESHOLD 1.5
double power_r(double arr[], int j, int n);
int main(void)
{
  string filename;
  fstream fin;
  double time_s = 0;
  double* arr = NULL;
  double short_power = 0, long_power = 0;
  int num = 0, short_Windows = 0, long_Windows = 0;
  cout << "Enter Your Open File:" << endl;
  cin >> filename;
  fin.open(filename.c_str());
  if (fin.fail())
  {
    cout << "Error Open File.\n";
    exit(-1);
  }
  else
  {
    fin >> num >> time_s;
    if (num > 0)
    {
      arr = new double[num];
      for (int i = 0; i < num; i++)
      {
        fin >> arr[i];
      }
      cout << "请输入长窗口:" << endl;
      cin >> long_Windows;
      cout << "请输入短窗口:" << endl;
      cin >> short_Windows;
      for (int j = long_Windows-1; j < num; j++)
      {
        short_power = power_r(arr, j, short_Windows);
        long_power = power_r(arr, j, long_Windows);
        double ratio = 0;
        ratio = short_power / long_power;
        if (ratio > THRESHOLD)
        {
          cout << " Possible event at " << time_s * j <<"seconds\n";
        }
      }
      delete[] arr;
    }
    fin.close();
  }
  system("pause");
  return 0;
}
double power_r(double arr[],int j, int n) 
{
  double s = 0;
  for (int i = 0; i < n; i++)
  {
    s = s + pow(arr[j - i], 2);
  }
  return s / n;
}


相关文章
|
7月前
|
传感器 数据采集 编解码
振弦采集仪在预防地震灾害监测中的作用与应用前景
振弦采集仪在预防地震灾害监测中的作用与应用前景
振弦采集仪在预防地震灾害监测中的作用与应用前景
|
7月前
|
传感器 算法 数据处理
振弦采集仪在地基沉降监测中的应用研究
振弦采集仪在地基沉降监测中的应用研究 振弦采集仪是一种专门用于测量地基沉降的仪器,它采用振弦原理来测量地基的沉降情况。振弦采集仪通过在地基上安装一根细长的弹性振弦,并测量振弦的变形来获得地基沉降的数据。在地基沉降监测中,振弦采集仪可以提供精确的、实时的地基沉降数据,对地基沉降的监测和分析非常有帮助。
振弦采集仪在地基沉降监测中的应用研究
|
存储 数据采集 安全
振弦式轴力计和振弦采集仪组成的安全监测解决方案
振弦式轴力计和振弦采集仪是一种常用的结构安全监测工具,可以用于评估建筑物、桥梁、隧道或其他结构的结构健康状态和安全性能。这种监测方案较为先进、精确,并且能够监测长期的结构反应,因此在工程领域中广泛应用。
振弦式轴力计和振弦采集仪组成的安全监测解决方案
|
存储 数据采集 安全
振弦式轴力计和振弦采集仪组成的监测解决方案
振弦式轴力计和振弦采集仪是两种常用的安全监测设备,可以用于监测桥梁、建筑物等结构体的变形、振动以及轴力等参数,以保证结构安全。下面是由振弦式轴力计和振弦采集仪组成的安全监测解决方案:
振弦式轴力计和振弦采集仪组成的监测解决方案
|
6月前
|
存储 安全
振弦采集仪在建筑物安全监测中的应用与研究
振弦采集仪在建筑物安全监测中的应用与研究
振弦采集仪在建筑物安全监测中的应用与研究
|
6月前
|
传感器 数据采集 安全
了解振弦采集仪在建筑物安全监测中的应用与研究
了解振弦采集仪在建筑物安全监测中的应用与研究
了解振弦采集仪在建筑物安全监测中的应用与研究
|
6月前
|
安全
振弦采集仪在地震灾害应急安全监测中的作用与实践
振弦采集仪在地震灾害应急安全监测中的作用与实践
振弦采集仪在地震灾害应急安全监测中的作用与实践
|
7月前
|
安全
振弦采集仪在地震灾害监测中的作用与意义
振弦采集仪在地震灾害监测中起着非常重要的作用,并且具有以下几个方面的意义:
振弦采集仪在地震灾害监测中的作用与意义
|
存储 传感器 数据采集
基于振弦式轴力计和采集仪的安全监测解决方案
振弦式轴力计是一种测量结构物轴向力的设备,通过测量结构物上的振弦振幅变化,可以确定结构物轴向力的大小。采集仪是一种用于采集和存储传感器数据的设备,通常与振弦式轴力计一起使用,用于实时监测结构物的安全状态。基于振弦式轴力计和采集仪的安全监测解决方案包括以下几个步骤:
基于振弦式轴力计和采集仪的安全监测解决方案
|
传感器 监控 安全
井下空气质量检测预警系统,煤矿生产、事故应急检测和实时监测
井下空气质量检测预警系统,主要用于煤矿生产、事故应急检测和实时监测
井下空气质量检测预警系统,煤矿生产、事故应急检测和实时监测