地震监测系统

简介: 地震监测系统

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

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;
}


相关文章
HTML+VUE+element-ui通过点击不同按钮展现不同页面
HTML+VUE+element-ui通过点击不同按钮展现不同页面
|
计算机视觉 Python
OpenCV形态学运算中梯度运算、顶帽、黑帽运算讲解与实战应用(附Python源码)
OpenCV形态学运算中梯度运算、顶帽、黑帽运算讲解与实战应用(附Python源码)
498 0
|
JSON 数据格式 物联网
HTTP协议接入物联网平台(Getman模拟)
物联网平台通过HTTP连接通信(Getman模拟)
3556 0
HTTP协议接入物联网平台(Getman模拟)
|
12月前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
365 61
|
数据采集 算法 小程序
MaaS一体化绿色出行服务,实现城市交通出行碳中和
和管理交通相关服务,以满足消费者的出行需求。旨在深刻理解公众的出行需求,将各种交通模式整合在统一的服务体系与平台上,利用大数据进行决策,以优化资源配置,满足出行者多样化出行需求,并通过统一的互联网应用对外提供服务。
3058 0
MaaS一体化绿色出行服务,实现城市交通出行碳中和
|
11月前
|
缓存 API
全球最新地震信息免费API接口教程
该接口提供全球最新地震信息,数据源自中国地震台网,每5分钟更新一次。支持POST/GET请求,需提供用户ID和KEY。返回数据包括地震等级、时间、经纬度、深度及位置等详细信息。示例请求和响应详见文档。
1472 4
|
5月前
|
数据安全/隐私保护
地震波小波变换,matlab小波变换,时频域分析
地震波小波变换,matlab小波变换,时频域分析
|
缓存 API Python
Python实战演练之全国地震预警
Python实战演练之全国地震预警
|
存储 人工智能 数据管理
"AI大改造,让NAS焕发新生!智能分类、秒速检索、隐私守护、故障先知……你的数据存储神器全面升级,告别传统,拥抱未来智能NAS新纪元!"
【8月更文挑战第14天】大数据时代催生了对高效数据管理的需求,传统NAS面临挑战。AI技术的应用为NAS带来智能数据分类、内容分析检索、安全防护及预测性维护等功能。通过示例代码展示了AI如何简化数据管理、提升用户体验、保障数据安全及提高系统稳定性。集成AI的NAS正引领数据存储新时代。
447 3
|
SQL 数据采集 数据可视化
基于Hive的招聘网站的大数据分析系统
基于Hive的招聘网站的大数据分析系统
288 2