This repository was archived by the owner on Jul 21, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWaveElevationToWaveSpectrum.m
More file actions
55 lines (44 loc) · 2.03 KB
/
Copy pathWaveElevationToWaveSpectrum.m
File metadata and controls
55 lines (44 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
%% Initialize
clear ; clc ; close all ;
%% Load time signal of wave elevation
Bins = 500 ;
RandSeed = 2 ;
waveElevationMatName = sprintf('waveElevation_Bins%d_RandSeed%d.mat', Bins, RandSeed) ;
waveFreqeuncyDiscreteMatName = sprintf('waveFrequency_Bins%d_RandSeed%d.mat', Bins, RandSeed) ;
timeStepMatName = sprintf('timeStep_Bins%d_RandSeed%d.mat', Bins, RandSeed) ;
load(waveElevationMatName) ;
load(waveFreqeuncyDiscreteMatName) ;
load(timeStepMatName) ;
% Syncronize axis. across row: time, across column: wave frequency
waveElevation = waveElevation' ;
waveFrequencyDiscrete = waveFrequencyDiscrete' ;
periodWhole = max(timeStep) ;
%% Calculate coefficient A
for waveFrequencyDiscreteIndex = 1:length(waveFrequencyDiscrete)
ADiscrete(waveFrequencyDiscreteIndex) =...
(2 / periodWhole) *...
trapz(timeStep, waveElevation .* cos(waveFrequencyDiscrete(waveFrequencyDiscreteIndex)*timeStep)) ;
end
%% Calculate coefficient B
for waveFrequencyDiscreteIndex = 1:length(waveFrequencyDiscrete)
BDiscrete(waveFrequencyDiscreteIndex) =...
(2 / periodWhole) *...
trapz(timeStep, waveElevation .* sin(waveFrequencyDiscrete(waveFrequencyDiscreteIndex)*timeStep)) ;
end
%% Calculate wave height and phase angle
waveHeightDiscreteSquare = ADiscrete.^2 + BDiscrete.^2 ;
% phaseAngle = - BDiscrete ./ ADiscrete ;
%% Derive wave spectrum
waveFrequencyInterval = waveFrequencyDiscrete(2) - waveFrequencyDiscrete(1) ;
waveSpectrumDiscrete = waveHeightDiscreteSquare / (2*waveFrequencyInterval) ;
%% Visulization of the wave spectrum
waveSpectrumFig = figure ;
plot(waveFrequencyDiscrete, waveSpectrumDiscrete) ;
xlabel('\omega (rad/sec)') ; ylabel('S_{\eta}(\omega) (m^{2}/(rad/sec))') ;
title('Wave spectrum') ;
grid on ;
waveSpectrumFigName = sprintf('waveSpectrum_Bins%d_RandSeed%d.png', Bins, RandSeed) ;
saveas(waveSpectrumFig, waveSpectrumFigName) ;
%% Significant wave height
variance = trapz(waveFrequencyDiscrete, waveSpectrumDiscrete) ;
waveSignificantHeight = 4 * sqrt(variance)