1.軟體版本
matlab2017b
2.系統原理
海浪模組化的設計主要涉及到海浪模型的确定,海浪的各個參數的計算等,本系統,
海浪模型如下:
在現實中,海浪模型的種類有很多,這裡采用這個模型,主要是因為該模型的效果和你給出的網站上的效果最為接近。
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.測試結果
仿真操作如上上圖所示,
首先點選START開始模拟海浪的效果,然後點選stop可以暫停。
上圖3标簽就是網站上對應的調整風速度大小的按鍵。