天天看點

【海浪模組化1】海浪模組化的理論分析和matlab仿真

1.軟體版本

matlab2017b

2.系統原理

       海浪模組化的設計主要涉及到海浪模型的确定,海浪的各個參數的計算等,本系統,

海浪模型如下:

【海浪模組化1】海浪模組化的理論分析和matlab仿真

       在現實中,海浪模型的種類有很多,這裡采用這個模型,主要是因為該模型的效果和你給出的網站上的效果最為接近。

【海浪模組化1】海浪模組化的理論分析和matlab仿真

 G為重力加速度,取常數9.8

3.核心源碼

global Winds;   %風速
global g; %重力加速度
global kk; %仿真模型沙盤和實際區域的大小比例
global Xmax;
global Ymax;
global Dxy;
global flag;
global VX;
global VY;
global VZ;


flag = 0;

g    = 9.8; %重力加速度
kk   = 1/40; %仿真模型沙盤和實際區域的大小比例
%仿真的間隔
Dxy  = 4;


%仿真覆寫的海域範圍
Xmax = 1000;
Ymax = 1000;

Start  = 200;
x      = [Start:Dxy:Xmax];
Ymax2  = round(Ymax/2);
y      = [Start:Dxy:Ymax2];
[xo,yo]= meshgrid(x,y);
z2     = zeros(size(x));

%海浪自身運動的波高
r = (3.5325*Winds^2.5)/1000;

%海浪自身運動的波長
k = 2*g/(3*Winds^2);
L = 2*pi/k;

%周期T
T = sqrt(2*pi*L/g);

%波頻率
w = sqrt(2/3)*g/T;
t = 0;

while(flag == 0)
    disp('the wind speed is');Winds
    t = t + 1;
    for i = 1:(Ymax2-Start)/Dxy+1
        for j = 1:(Xmax-Start)/Dxy+1
            %衰減系數
            d             = sqrt((xo(1,j)-0)^2 + (yo(1,j)-0)^2);
            alphas        = exp(-0.07*d) - 0.18; 
            z2(i,j)       = alphas*r*cos(k*sqrt((xo(1,j)-0)^2 + (yo(1,j)-0)^2) - w*t);
        end
    end
    %顯示局部效果
    axes(handles.axes1);
    surfl(xo,yo,z2);
    axis([Start-50 Xmax+50 Start-50 Ymax2+50 -8 10]);
    shading interp;
    colormap([143/255,157/255,203/255]);
    alpha(0.75);
    lightangle(-30,90);
    
    view([VX,VY,VZ]);
    
    
    pause(0.1);    
    
    
    %海浪自身運動的波長
    k = 2*g/(3*Winds^2);
    Ls = 2*pi/k;
    set(handles.edit1,'String',num2str(Ls));
    
    
    %計算得到海浪的參數名額
    %海浪自身運動的波高
    rs = (3.5325*Winds^2.5)/1000;
    set(handles.edit3,'String',num2str(rs));
    

    %周期T
    T = sqrt(2*pi*L/g);
    %速度
    c = g*T/(2*pi); 
    set(handles.edit4,'String',num2str(c)); 
    
    %波頻率
    w = sqrt(2/3)*g/T;    
    set(handles.edit5,'String',num2str(w/2/pi));
    
end      

4.測試結果

【海浪模組化1】海浪模組化的理論分析和matlab仿真

仿真操作如上上圖所示,

首先點選START開始模拟海浪的效果,然後點選stop可以暫停。

上圖3标簽就是網站上對應的調整風速度大小的按鍵。

繼續閱讀