[Tutorial] How to extract tsunami observation data from tide gauge stations using MATLAB


The “tutorial” series contain the articles regarding my research work. It will present some tricks on working with the research regarding seismic and tsunami risk analysis. The topic can be broad depending on my current works.

Previously, I have a research weblog contained my research information during my master degree. However, to make it simple, I will write down some articles regarding specific topics related to my current works in this blog. I made several series of Java language programming tutorial on solving random analysis couple years ago. I want to continue this positive activities to improve my knowledge and to discuss with other students/researchers who face the similar problems.

Today’s tutorial is about “Extracting tsunami observation data from tide gauge stations.” 

I faced a “big” problem while presenting my research in the front of my first and second supervisor on last June related to the observation of tsunami wave data. This obstacle also became an issue when I was presenting my progress in zemi (weekly meeting in Japan) at Coastal Engineering Laboratory, DPRI-Kyoto University. I need to understand how the water level is measured on tide gauge station. In addition, this observation data need to be further analysed in order to appropriately used for tsunami simulation result analysis.

The observation data of tsunami wave from tide gauge station are taken from tide gauge station distributed around the world. It can be accessed from this link.  You can search specific region buy clicking the country name. As I want to work with Sumatra (Indonesia) case, then I just need to search Indonesia tide gauge stations. The complete list of station is further displayed in your screen as shown in Figure 1.


The tide gauge station list in Indonesia

Since I am working with the 2010 Mentawai Earthquake case occurred on 25 October, I am taking Padang tide gauge station as my point of interest. Padang station is the nearest station to the epicentre of the earthquake. You can directly click the station name (see the below figure).


Padang station on the list of tide gauge stations   

The appearance of tide gauge database will be the following:


The red-rectangle area shows the period of water elevation data. We can change the period based on our time interest. In my case, I take 7 days period (there are 4 kind of periods: 12 hours, 1 day, 7 day, and 30 days). Because the Earthquake event occurred on 25 October, so I choose 29th October 2010 as my time interest.

Remember: the showed water elevation data are taken from 7 days before our setting time. It means the water level will be shown for my case is starting from 22-29 October 2010.

The visual image of my data interest is shown in the below figure:


The yellow area in the wave profile shows anomalies of water level profile. It indicates the drastic water level change due to tsunami. You then can click “Show Data” to get the real data of water elevation (see yellow circle on the above figure). You can copy the data to Ms. Excel or other tools before defining as the variable in MATLAB.

Remember: the data can be somehow lost. So you need to check if all three sensors are providing the lost data. You can adjust the lost data using the additional data from other sensors.

For you information, the Padang station has 3 sensors as the equipment to record the water level at that point. The detailed information regarding the sensor can be found on the above link. As far as I know, the interval record period is one of the differences among those three sensors. I use “enc” sensor to take the water level data since the interval recording time is one minute. The lost data from enc sensor are taken from other two sensors by making some scientific adjustments.

After completing the lost data, you have to correct the data taken using the sea level of targeted station. For Padang station, the blue area on the above figure is showing the sea level of Padang. The data taken minus the sea level will be the final data for water elevation of our targeted station.

The water change level due to tsunami is defined as the residual water level between observational data and theoretical data. Fourier and Harmonic analysis are typically used to define the theoretical representation of water level. In this tutorial, I use Fourier transform as the idealisation to determine the theoretical representation of water level. The theoretical background of these two theories can be found from Dr. Rusell Herman’s presentation about Harmonic Analysis and the Prediction of tides.

The following coding is used to construct the theoretical model of water level:

clear all
close all

load padang1_tide 

y = rot90(y);
y = y-WSL;

% Compute the matrices of trigonometric functions
% Compute Fourier Coefficients
% Reconstruct Signal - pmax is number of frequencies used in increasing order
% Plot Data
% Plot reconstruction over data
hold on
hold off 
y2 = rot90(ynew);
% plot(y2,'r')
residu_y = y-y2;

temp1 = residu_y(:,(5203:5383)); %take the interest perio. In this case refers to EQ time to 3 hours after the event


In my case, I saved two variables in padang1_tide.mat data include WSL and y data. WSL refers to sea level of Padang (-3.207m) while y stands for real water elevation data.

The result of extracting the water level change due to tsunami is shown in the following firgure:


Figure 1 shows the plot of two water elevation level in Padang. First wave (blue dot) is a real data and the red line is for the theoretical data creating from Fourier analysis while figure 2 visualises the residual signal depicting the water level change.

My period interest is based on the Earthquake time of Mentawai event which is occurred on 14.42 (UTC). To get the water change level due to tsunami, I can directly take the data on that period. The final product of water level change due to tsunami is shown in the following figure:


Now, you can used the data as a reference to assess your tsunami simulation.

Good luck!

Bristol, 3 September 2015


7 thoughts on “[Tutorial] How to extract tsunami observation data from tide gauge stations using MATLAB

  1. I have learn about tides while in undergraduate study and my lecturer only taught his students about harmonic analysis method for obtaining the value of the variable quantity at time interest. I don’t have any idea about fourier method used for idealisation in tide analysis. After we derived the fourier line, next what is the function of that line ? and fourier is used for signal analysis, isn’t it ? So what signal in this case (tide analysis) are processed using fourier method ? I’m sorry if these questions are too fundamental, i just want to know about them more 🙂 thank you

    • Actually, harmonic analysis is also used to theoretically model the tide wave. In this tutorial we use fourier analysis. The observed signal from tide is idealized theoretically using fourier method. This theoretical idealisation then used as the parameter to calculate the residual (OBS-theretical = residual).

      Is it clear?

  2. Ok Sir thanks for the explanation. So the fourier line is used to fitting the harmonic line, isn’t it ? And now I have a study plan to use tsunami wave as a combination of deformation analysis with GPS data. This is the reference one : https://adityagusman.wordpress.com/2015/01/29/fault-slip-distribution-of-the-2014-iquique-chile-earthquake-estimated-from-ocean-wide-tsunami-waveforms-and-gps-data/.

    I think the tsunami wave data processing inside is similar with your study work, isn’t it ?
    And my another question is why you didn’t use polynomial function than fourier method ?

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s