scientimate.wavefromsurfaceelevpsd#
Hm0, fp, Tp, Tm01, Tm02, f, Syy, m0 = scientimate.wavefromsurfaceelevpsd(Eta, fs, fcL=0, fcH=None, nfft=None, SegmentSize=256, OverlapSize=128, dispout='no')
Description#
Calculate wave properties from water surface elevation power spectral density
Inputs#
- Eta
Water surface elevation time series data in (m)
- fs
Sampling frequency that data collected at in (Hz)
- fcL=0
Low cut-off frequency, between 0*fs to 0.5*fs (Hz)
- fcH=fs/2
High cut-off frequency, between 0*fs to 0.5*fs (Hz)
- nfft=length(Eta)
Total number of points between 0 and fs that spectrum reports at is (nfft+1)
- SegmentSize=256
Segment size, data are divided into the segments each has a total element equal to SegmentSize
- OverlapSize=128
Number of data points that are overlaped with data in previous segments
- dispout=’no’
Define to display outputs or not (‘yes’: display, ‘no’: not display)
Outputs#
- Hm0
Zero-Moment Wave Height (m)
- fp
Peak wave frequency (Hz)
- Tp
Peak wave period (second)
- Tm01
Wave Period from m01 (second), Mean Wave Period
- Tm02
Wave Period from m02 (second), Mean Zero Crossing Period
- f
Frequency (Hz)
- Syy
Power spectral density (m^2/Hz)
- m0
Zero-Moment of the power spectral density (m^2)
Examples#
import scientimate as sm
import numpy as np
import scipy as sp
from scipy import signal
fs=2 #Sampling frequency
duration=1024 #Duration of the data
N=fs*duration #Total number of points
df=fs/N #Frequency difference
dt=1/fs #Time difference, dt=1/fs
t=np.linspace(0,duration-dt,N) #Time
Eta=sp.signal.detrend(0.5*np.cos(2*np.pi*0.2*t)+(-0.1+(0.1-(-0.1)))*np.random.rand(N))
Hm0,fp,Tp,Tm01,Tm02,f,Syy,m0=sm.wavefromsurfaceelevpsd(Eta,fs,0,fs/2,N,256,128,'yes')
References#
Welch, P. (1967). The use of fast Fourier transform for the estimation of power spectra: a method based on time averaging over short, modified periodograms. IEEE Transactions on audio and electroacoustics, 15(2), 70-73.