• 【海浪建模3】三维随机真实海浪建模以及海浪发电机建模matlab仿真


    1.软件版本

    matlab2017b

    2.算法概述

    依照上次的海浪模拟的模式【海浪建模1】【海浪建模2】,这次把海浪从之前的规则海浪做成随机海浪,模拟真是海浪情况。

    然后分别把两个发电机模拟在不规则海浪中。

    发电机模式1之前刚刚做好,应该技术人员留有备份。

    发电机模式2如下图:

     

           如图),四个圆管中分别装有能量转化器。图是设备整体外观图,随着海波产生运动,带动能量转化器运动从而产生电能。整个设备浮于海面中。

    3.核心源码

    1. global Winds; %风速
    2. global g; %重力加速度
    3. global kk; %仿真模型沙盘和实际区域的大小比例
    4. global Xmax;
    5. global Ymax;
    6. global Dxy;
    7. global flag;
    8. global VX;
    9. global VY;
    10. global VZ;
    11. global seepart;
    12. global seeall;
    13. global sel;
    14. RandStream.setDefaultStream(RandStream('mt19937ar','seed',3));
    15. flag = 0;
    16. g = 9.8; %重力加速度
    17. kk = 1/40; %仿真模型沙盘和实际区域的大小比例
    18. %仿真的间隔
    19. Dxy = 4;
    20. %仿真覆盖的海域范围
    21. Xmax = 1000;
    22. Ymax = 1000;
    23. Start = 200;
    24. x = [Start:Dxy:Xmax];
    25. Ymax2 = round(Ymax/2);
    26. y = [Start:Dxy:Ymax2];
    27. [xo,yo]= meshgrid(x,y);
    28. z2 = zeros(size(x));
    29. %海浪自身运动的波高
    30. r = (3.5325*Winds^2.5)/1000;
    31. %海浪自身运动的波长
    32. k = 2*g/(3*Winds^2);
    33. L = 2*pi/k;
    34. %周期T
    35. T = sqrt(2*pi*L/g);
    36. %波频率
    37. w = sqrt(2/3)*g/T;
    38. T = 0;
    39. %发电量
    40. Power = 0;
    41. amps = 0;
    42. while(flag == 0)
    43. T = T + 1;
    44. PP = floor(6*(Winds - 5.8));%1~90
    45. [d,g,H,alpha,beta,waves,wave_no_lookup,angle_lookup,scales] = func_Random_Ocean_Initial(PP);
    46. t = 0.1*T;
    47. surfo = zeros(scales,scales);
    48. for X=1:scales
    49. x = X-1;
    50. xplot(X) = x;
    51. for Y=1:scales
    52. y = Y-1;
    53. yplot(Y) = y;
    54. for i=1:PP
    55. surfo(X,Y) = surfo(X,Y) + waves(i).amp*cos( waves(i).xcoeff*x + waves(i).ycoeff*y + waves(i).w*t + waves(i).phase);
    56. end
    57. end
    58. end
    59. %显示局部效果
    60. axes(handles.axes1);
    61. surf(xplot,yplot,surfo);
    62. hold on;
    63. amps = surfo(50,50);
    64. if sel == 1
    65. func_power_gen_machine_randomOcean(amps,1.6,seepart,seeall);
    66. else
    67. func_power_gen_machine2_randomOcean(amps,1.6,seepart,seeall);
    68. end
    69. axis([0,scales,0,scales,-H,H]);
    70. shading interp;
    71. colormap([143/255,157/255,203/255]);
    72. lightangle(-30,90);
    73. xlabel('x');
    74. ylabel('y');
    75. zlabel('z');
    76. grid on;
    77. view([VX,VY,VZ]);
    78. pause(0.000001);
    79. %海浪自身运动的波长
    80. k = 2*g/(3*Winds^2);
    81. Ls = 2*pi/k;
    82. set(handles.edit1,'String',num2str(Ls));
    83. %计算得到海浪的参数指标
    84. %海浪自身运动的波高
    85. rs = (3.5325*Winds^2.5)/1000;
    86. set(handles.edit3,'String',num2str(rs));
    87. %周期T
    88. T = sqrt(2*pi*L/g);
    89. %速度
    90. c = g*T/(2*pi);
    91. set(handles.edit4,'String',num2str(c));
    92. %波频率
    93. w = sqrt(2/3)*g/T;
    94. set(handles.edit5,'String',num2str(w/2/pi));
    95. %发电量
    96. %注意,由于海浪发电的具体的计算公式,你没有提供,所以这里发电量仅仅使用简单的海浪的大小来表示,
    97. %实际中,发电量就是和海浪大小相关的。所以在得到公式之后,修改210行代码即可。
    98. Power = abs(2*max(surfo(1,:)));
    99. set(handles.edit12,'String',num2str(Power));
    100. hold off;
    101. end

    4.测试结果

    通过这次新的模型的建模,以及结合前一次的效果,这次得到的软件的界面如下所示:

    从上面的界面可知,原先的界面中多了一个choose power mach的按键,这个按键的主要功能就是选择不同的发电机的按钮,

    下面对整个仿真过程进行截图以及说明分析:

    下面点击那个新放进去的那个按钮,选择不同的发电机,得到如下的结果:

    再点一下,得到如下的界面:

    下面对这个新放进去的发电模型的侧面进行介绍:

    A19-08

  • 相关阅读:
    【C++】一篇了解AVL实现细节(易懂图解版)
    11.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏接收网络数据包的操作
    (附源码)ssm模具配件账单管理系统 毕业设计 081848
    必看,时间序列分析
    [pytorch笔记]04 --进阶训练技巧
    网工内推 | IT工程师,IA认证即可,五险一金,全勤奖,最高10k
    sql note分组查询
    动态自适应可变加权极限学习机ELM预测算法附Matlab代码
    Leecode刷题 1342. 将数字变成 0 的操作次数
    车载GNSS/INS/LiDAR坐标系定义与理解
  • 原文地址:https://blog.csdn.net/ccsss22/article/details/125610776