Normalized spectrogram of a seismic acceleration
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Normalized spectrogram

Normalized spectrogram

Normalized spectrogram of a seismic acceleration

@ppizarror GPL V2.0

Normalized spectrogram to seismic acceleration written in Matlab. The algorithm used is the following:

1. Baseline correction
2. Tuckey window is applied with r=5%.
3. FFT on window signal.
4. Spectrum is smoothed by 5 points halfwidth moving average.
5. Each element of spectrum is normalized by maximum epsectral amplitude.

The function

The normalized spectrogram function is defined by:

[matrix, matrix_t, matrix_f] = norm_spectrogram(t, acc)


Variable Description
t Time of the seismic accelerogram
acc Acceleration (g) of the seismic accelerogram

This function returns a matrix in where columns refer to mean window time (matrix_t), rows are the frequency of the spectrogram (matrix_f) and the value of the matrix are the amplitude of the spectrogram from each time-window on each frequency.

To print matrix you should use:

plot_norm_matrix(m, mt, mf, t, acc, regname)


Variable Description
m Normalized matrix
mt Time array from matrix
mf Frequency array from matrix
t Time of the seismic data
acc Acceleration of seismic data
regname Name of the seismic data (plot title)


Lets suppose that a seismic registry is stored on data/CNV_APED_201604162359_N_100.txt, the file structure is like:

0.000000	-6.329500
0.010000	2.539600
0.020000	12.822900
0.030000	9.435300
0.040000	-5.397100
0.050000	-14.233900


% Load the data
data = load('data/CNV_APED_201604162359_N_100.txt');

% Set time and acceleration array
t = data(:, 1);
acc = data(:, 2) ./ 980; % Convert from cm/s2 to g

After that we will use norm_spectrogram function

[m, mt, mf] = norm_spectrogram(t, acc);

Then plot:

plot_norm_matrix(m, mt, mf, t, acc, 'APED 2016/04/16 23:59 N-S');



This project is licensed under GPLv2 []


Pablo Pizarro R. | 2017