【海浪建模1】海浪建模的理论分析和matlab仿真

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标签就是网站上对应的调整风速度大小的按键。

4所显示就是海浪的各个参数。具体参数的计算见上一页的理论介绍

5这里是3D效果的显示,可以从不同的角度进行观察海浪(MATLAB中GUI的AXIS无法直接用鼠标旋转进行三维显示,所以需要通过这个功能进行显示)

A19-06

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值