Skip to content

ppizarror/normalized-spectrogram

Repository files navigation

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 spectral amplitude.

The function

The normalized spectrogram function is defined by:

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

Where:

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)

Where:

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)

Example

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
...

Then:

% 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');

Obtaining:

License

This project is licensed under GPLv2 [https://www.gnu.org/licenses/gpl-2.0.html]

Author

Pablo Pizarro R. | 2017 - 2019