随机波浪谱分析——自相关函数法 (MATLAB)

基本原理

自相关函数

假设采样时距为 Δ t \Delta t Δt,则海浪随机序列自相关函数可以写成
R ( υ Δ t ) = 1 N − υ ∑ n = 1 N − υ x ( t n + υ Δ t ) x ( t n ) R(\upsilon\Delta t)=\frac{1}{N-\upsilon}\sum\limits_{n=1}^{N-\upsilon}x(t_n+\upsilon\Delta t)x(t_n) R(υΔt)=Nυ1n=1Nυx(tn+υΔt)x(tn)
τ = υ Δ t , υ = 0 , 1 , 2 , . . . , m \tau=\upsilon\Delta t, \upsilon=0, 1, 2,..., m τ=υΔt,υ=0,1,2,...,m
这样可以得到 R ( υ ) R(\upsilon) R(υ)的m+1个值,他们具有等间隔 Δ t \Delta t Δt

粗谱

这里我们令 L n L_n Ln代表频率 f n f_n fn对应的谱初值,有
L n = 2 π ∑ τ = 0 m Δ t R ( τ ) c o s ω n τ d τ L_n=\frac{2}{\pi}\sum\limits_{\tau=0}^{m\Delta t}R(\tau)\rm cos\omega_n\tau \rm d\tau Ln=π2τ=0mΔtR(τ)cosωnτdτ

谱平滑

谱的平滑可采用哈明窗(Hamming)或哈宁窗(Hanning)函数进行改进

哈明窗

S ( ω n ) = 0.23 L n − 1 + 0.54 L n + 0.23 L n + 1 S(\omega_n)=0.23L_{n-1}+0.54L_{n}+0.23L_{n+1} S(ωn)=0.23Ln1+0.54Ln+0.23Ln+1
对于两个端点
S ( ω 0 ) = 0.54 L 0 + 0.46 L 1 S(\omega_0)=0.54L_{0}+0.46L_{1} S(ω0)=0.54L0+0.46L1
S ( ω n ) = 0.46 L m − 1 + 0.54 L m S(\omega_n)=0.46L_{m-1}+0.54L_{m} S(ωn)=0.46Lm1+0.54Lm

哈宁窗

S ( ω n ) = 0.25 L n − 1 + 0.5 L n + 0.25 L n + 1 S(\omega_n)=0.25L_{n-1}+0.5L_{n}+0.25L_{n+1} S(ωn)=0.25Ln1+0.5Ln+0.25Ln+1
对于两个端点,系数均为0.5。

%% Spectrum Analysis
%   Code by JN_Cui
%   Modified on 23/6/2020
%% Defination
%   Three methods are included:
%   1. Self-Correlation Function (SCF) method
%   2. Fast Fourier Transform (FFT) method
%   3. Maximum Entropy Method (MEM)
%   The function for these three methods are named as:
%   1. Spectrum_Analysis_SCF
%   2. Spectrum_Analysis_FFT
%   3. Spectrum_Analysis_MEM
%% Function Spectrum_Analysis_SCF
function [Spectrum,Frequency]=Spectrum_Analysis_SCF(Surf,fs,Method)
Data=Surf-mean(Surf);
N=length(Data);
dt=1/fs;
M=roud(N/30);
df=1/(2*M*dt);
% Self-correlation function
for v=0:M
    R(v+1)=sum(Data(1+v:N).*Data(1:N-v))/(N-v);
end
% Spectrum
for n=0:M
    L_sum=0;
    for v=1:M-1
        L_sum=R(v+1)*cos(2*pi*(n)*df*v*dt)+L_sum;
    end
    L(n+1)=2*dt/pi*(R(1)/2+L_sum+1/2*R(M+1)*cos(2*pi*n*df*M*dt));
end
% Smooth the spectrum by Hamming
if Method == ['Hamming']
    for i=1:M-1
        S1(i+1)=0.23*L(i)+0.54*L(i+1)+0.23*L(i+2);
    end
    S1(1)=0.54*L(1)+0.46*L(2);
    S1(M+1)=0.46*L(M)+0.54*L(M+1);
    x=0:1/(2*M*dt):1/(2*dt);
    Spectrum=S1;
    Frequency=x*2*pi;
    % Hanning
elseif Method == ['Hanning']
    for i=1:M-1
        S2(i+1)=0.25*L(i)+0.5*L(i+1)+0.25*L(i+2);
    end
    S2(1)=0.5*L(1)+0.5*L(2);
    S2(M+1)=0.5*L(M)+0.5*L(M+1);
    x=0:1/(2*M*dt):1/(2*dt);
    Spectrum=S2(2:end);
    Frequency=x(1:end-1)*2*pi;
else
    disp('wrong input')
    Spectrum=NaN;
    Frequency=NaN;
    return
end
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值