matlab – Conversion of time domain resposne to frequency domain
I would like to convert time-domain wave elevation (sea waves) for irregular waves to the frequency domain to get Jonswap Spectrum. I got the time-domain response from open software by giving the appropriate parameters. After using FFT commands and smoothening function in MATLAB I got the spectrum which is attached below. I should be getting a very smooth curve instead of fluctuations in the plot. I’ll be grateful if you could let me know the mistake or missing things in my code attached below.
clear; clc; Wave1= xlsread('WaveElev_Time_LC1.xlsx'); Wave=Wave1(:,2); figure(); plot(Wave1(:,1),Wave); title("Wave elevation in Time Domain"); xlabel('Time(s)','linewidth',3); ylabel('Wave Elevation(m)','linewidth',3); xlim([0 3600]); Ns=length(Wave); fs=1/0.0125; fft_Wave=fft(Wave); fft_Wave = fft_Wave(1:Ns/2+1); psdx = (1/(fs*Ns)) * abs(fft_Wave).^2; psdx(2:end-1) = 2*psdx(2:end-1); freq = 0:fs/Ns:fs/2; y = smooth(freq, psdx); figure(); plot(freq,y,'linewidth',2);
Read more here: Source link