Mathematica中文论坛-非官方

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 9745|回复: 0

豆粑粑 生成海浪数据

[复制链接]

525

主题

594

帖子

2980

积分

金牌会员

Rank: 6Rank: 6

积分
2980
发表于 2018-2-12 09:52:38 | 显示全部楼层 |阅读模式
今天,回答别人的问题。是生成海浪的。看着,可是真亲切啊。
想想那时,为了一个程序,能折腾半个月。机器,也不行。水平也不行。
fig_wave.png
  1. clear all
  2. clc


  3. pinpushu=20;
  4. fengji=7;
  5. jiaodushu=360;

  6. wavewmin = [2.438306 1.462983 1.044989 0.812770 0.664988 0.562683 0.487659 0.430288];
  7. wavewmax = [16.444115 9.866469 7.047480 5.481373 4.484760 3.794799 3.288826 2.90190];
  8. wavewp=[4.053570 2.432142 1.737244 1.351190 1.105519 0.935439 0.810714 0.715336];

  9. %-----------------------------------------------------
  10. u=[3,5,7,9,11,13,15,17];
  11. %---------------------------------------------------

  12. if fengji>8
  13.     fengji=8;
  14. end
  15. if fengji<1
  16.     fengji=1;
  17. end
  18. fi=fengji;
  19. wmin=wavewmin(fi);
  20. wmax=wavewmax(fi);
  21. wp=wavewp(fi);
  22. ui=u(fi);
  23. M=pinpushu;
  24. N=jiaodushu;
  25. wavewn=(wmax-wmin)/M;
  26. thetawn=pi/N;
  27. dx=1;
  28. dy=1;
  29. x=[0:dx:100];
  30. y=[0:dy:80];
  31. [x,y]=meshgrid(x,y);
  32. z=zeros(size(x));

  33. for wi=1:M
  34.     for ki=1:N
  35.         theta=-pi/2+(ki-1)*thetawn;
  36.         epsin=rand*2*pi;
  37.         w=wmin+(wi-1)*wavewn+wavewn/2;
  38.         swi=0.81*exp(-7400/(w*ui+epsin).^4)*2*(cos(theta)).^2/(pi*(w.^5+epsin));
  39. %         swi=0.81*exp(-7400/(w*ui).^4)*2*(cos(theta)).^2/(pi*(w.^5));
  40.         
  41.         if swi > 100*eps
  42. %             M
  43. %             N
  44.             an=sqrt(abs(2*swi*wavewn*theta));
  45.             %              an=1;
  46.             z1=w*w*x*cos(theta)/9.8+w*w*y*sin(theta)/9.8+epsin;
  47.             z=an*cos(z1)+z;
  48.         end
  49.     end
  50. end

  51. surf(x,y,z);
  52. shading interp;%shading interp 会区分每个线形区域的颜色,并且插入与其相近的颜色
  53. lightangle(-45,30);
  54. set(findobj(gca,'type','surface'),'FaceLighting','phong','AmbientStrength',.3,'DiffuseStrength',.8,...
  55.     'SpecularStrength',.9,'SpecularExponent',200)

  56. h=gcf;
  57. fig_na=['./fig_wave'];
  58. % fun_work_li_035_myfig_out(h,fig_na,3);
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Mathematica中文论坛-非官方 ( 辽ICP备16001491号-1

GMT+8, 2024-3-28 23:45 , Processed in 0.119075 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表