QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3585|回复: 0
打印 上一主题 下一主题

【数学建模】基于matlab三维海浪模型仿真【含Matlab源码 1159期】

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2021-7-30 17:55 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    ( |5 ]) c* Y& ?% k2 g/ L& j% \【数学建模】基于matlab三维海浪模型仿真【含Matlab源码 1159期】
    & B* H7 l$ _% h4 D. W9 x% K( o一、简介
    ! d3 K/ r+ P8 D. r8 h, b基于matlab三维海浪模型仿真:海洋工程领域中的浮式结构物设计,需要精确计算海浪载荷,保证满足稳定性和安全性.该文利用MATLAB对Longuet-Higgins长峰波海浪模型和三维不规则短峰波随机海浪模型进行了仿真研究.结果表明,利用海浪谱来模拟三维随机海浪能够得到比较精确的海浪波面图和波高值,进一步根据流体的势流理论就可以分析计算出该结构物受到的海浪载荷,为校验结构物的结构强度提供了必要的基础。6 o+ ^% I& [, {) r( O1 g$ Z# J- l
    0 T( n$ p8 Y5 ]& [& S7 W
    $ o: a2 u7 y9 v, v* x
    二、源代码
    4 b& O) V8 U3 p9 Kclear all;# v6 S1 o9 F* p( O. f
    close all;% ?! Y9 A$ a1 g0 A

    8 q- S. l8 o- H0 g) M9 X+ ]6 U1 q' N" ]

    6 Z7 ^+ P. z0 tnhFig = 0; % Figure Number;
    ! B3 [0 X. c& rSeaRegLx = 40e+3; % Sea region length, unit: m' _0 e+ g/ _! C* `$ s
    SeaRegLy = 40e+3; % Sea region length, unit: m3 c/ I* v# H4 f# R# ~
    % 根据频域采样定理,在确定采样周期即波束的足迹宽度之后,
    2 k. }+ |& v, j* l: P: O4 I+ y% 可以利用时域采样的采样点数目(通过空间频谱的宽度即根据时域采样定理计算出采样点数),实现频域采样.
    ' h. w& `0 f: l9 u5 }% 对于海洋波谱而言,波谱宽度是非常宽的,因此其波谱宽度一般是指包括了大部分能量(或者说主要的能量部分)的不完全谱宽度
    : e1 n. R* y% ^% h) P$ b6 f7 T% 所以这里事先根据波谱函数计算主要能量部分对应的谱宽度
    5 F5 X$ t# I! G! t; l8 q( FxSampleStep = 50; % unit: m( I; r$ d) a1 ]
    ySampleStep = 50;- x1 z" S5 ?, B2 f! j& M( c& Y7 D
    xNs = round( SeaRegLx / xSampleStep );4 }+ k$ l$ u5 L8 U
    yNs = round( SeaRegLy / ySampleStep );
    ; q" H9 t6 e6 q7 r
    & z3 i. }9 y$ q0 C

    ) U' ~0 A& r& d* O' {x = linspace( -SeaRegLx / 2, SeaRegLx / 2, xNs );
    % B5 O! ~4 S: o& `/ V8 X  k  yy = linspace( -SeaRegLy/ 2, SeaRegLy / 2, yNs );0 [; F' `0 ~- a0 e3 x
    2 `8 ^! l, K( ^8 ?
      C; [( G* S2 O1 M- ^
    % 海浪谱仿真% v# r" Y4 ?7 M( \* u
    g = 9.8; % gravity acceleration
    2 l; @0 @7 |( x3 z% swell wave spectrum parameter8 R( @& [% U' n) @
    SwellWaveLength = 1000; % 涌浪波长/ R% @- N+ \' @9 ^- g
    KswellWavePeak = 2 * pi / SwellWaveLength;6 P7 K" D, F3 |* s7 _
    SwellAngled=0;
    " A8 d" f; K+ n! V4 D" MSwellAngle = SwellAngled/ 180 * pi; % 涌浪与观测向夹角+ p( _+ O5 c7 b9 w9 W
    KxswellWavePeak = KswellWavePeak * cos( SwellAngle );9 p9 w) p) q9 [+ E; Z# o6 k
    KyswellWavePeak = KswellWavePeak * sin( SwellAngle );
    ' B# h3 k4 H( x) g; QSigmaKx = 2.5e-3; % 涌浪谱宽度
    & w& }( B2 ^! \7 oSigmaKy = 2.5e-3;5 r0 X  h7 c8 u; A- s, _9 W
    SigmaHSwell = 2; %涌浪波高
    4 p# `  h, F& g% wind wave spectrum parameter- L+ \8 Y- h3 S
    WindAngle = 45 / 180 * pi; % 风向与观测向夹角
    % ^: p% s% Z* pU10 = 12; % 10米高处海面风速 % 5m/s, 10m/s, 15m/s 的风浪谱宽度分别为 1.5, 0.4, 0.15.对应的最大空间采样间隔为2m, 10m, 20m8 M! J/ H+ h& b
    KwindPeak = g / ( 1.2 * U10 )^2;
    " g% G& k  Q3 z/ T% sea wave spectrum parameter% ~$ |" W6 _3 l/ @$ A; E
    NxSeaWave = xNs; % 频域采样点数,方便傅立叶变换
    2 T! r+ Z% q8 }1 g. ?7 E; D4 hNySeaWave = yNs; " j& z# i6 p7 h9 x
    KxSeaWave = 2 * pi / SeaRegLx * ( -xNs / 2 : 1 : xNs / 2 - 1 );& G" o! J6 k9 R  o* v  {, o
    KySeaWave = 2 * pi / SeaRegLy * ( -yNs / 2 : 1 : yNs / 2 - 1 );7 L6 X9 s* }1 [' {: N
    KxSeaWaveTicks = KxSeaWave;# V2 y# E8 }, f5 ]
    KySeaWaveTicks = KySeaWave;; [4 G. u  f$ ?6 P. |9 ?; o
    KxSeaWave = ( KxSeaWave == 0 ) * ( max( KxSeaWave ) * 1e-16 ) + KxSeaWave; % avoid divided by 0
    ) }7 j5 ]  A1 D; rKySeaWave = ( KySeaWave == 0 ) * ( max( KySeaWave ) * 1e-16 ) + KySeaWave; % avoid divided by 0
    ( g6 U2 d- Z- Q/ P7 z- I4 d# {6 S/ S6 Z7 [  X
    4 P( |1 I/ n& b4 j3 y6 H4 ^/ p, I
    % swell wave spectrum
    6 h. ]0 v- k% x  B& |( cSpectrumSwell = zeros( NySeaWave, NxSeaWave );$ C1 C* F+ Q- C; n: z( k
    Temp1 = ones( NySeaWave, 1 ) * ( KxSeaWave - KxswellWavePeak ) / SigmaKx;6 j6 l: \) \6 a; S" f. c2 i8 H" r
    Temp2 = ( KySeaWave - KyswellWavePeak )' / SigmaKy * ones( 1, NxSeaWave );
    . M) c* V6 L0 p! p9 X* t7 ASpectrumSwell = SigmaHSwell^2 / 2 / pi / SigmaKx / SigmaKy * exp( -0.5 * ( Temp1.^2 + Temp2.^2 ) );
    - w+ `7 k$ y$ S& {% X& gclear Temp1;
    3 y- J- P. [+ qclear Temp2;
    - S7 K$ r) w$ D% c/ [1 zfigure;
    " S" J- G8 E" t. |colormap(gray(256));2 Y* G; r; P& ?+ G
    image( KxSeaWave, KySeaWave, 256 - 255 / ( max( max( abs( SpectrumSwell ) ) ) - min( min ( abs( SpectrumSwell ) ) ) ) * ( abs( SpectrumSwell ) - min( min ( abs( SpectrumSwell ) ) ) ) );3 ^8 l$ O) F' q) Q) n0 u
    axis('xy');  B) U; q. Y9 a
    xlabel( 'kx:X方向波数');0 K) y) n% V! S, w; |. j
    ylabel( 'ky:Y方向波数');+ Y9 q. _. v. D+ `. z! c1 E
    title( '涌浪谱');7 S' O0 v  o: P: G
    % A1 J# T8 p6 w$ z+ p* F/ z) l5 M
    ; R/ |! D' M5 H3 H6 F4 B9 A# ~# E
    KxSeaWaveMatrix = ones( NySeaWave, 1 ) * KxSeaWave;
    5 Z& R. |# o5 G" X( H5 F( rKySeaWaveMatrix = KySeaWave' * ones( 1, NxSeaWave );
    ( ?: ?6 s3 n, CKSeaWaveTemp1 = ( sqrt( KxSeaWaveMatrix.^2 + KySeaWaveMatrix.^2 ) );
    4 {: ?# y$ _0 ?1 m* ~& rFwk1 = exp( - 1.22 * ( sqrt( KSeaWaveTemp1 ./ KwindPeak ) -1 ).^2  );
    / w5 K3 K$ c9 Y2 f$ x" ~1 L- i* f$ eHKKpx1 = 1.24 * ( ( KSeaWaveTemp1 / KwindPeak < 0.31 ) & ( KSeaWaveTemp1 / KwindPeak >= 0 ) );
    $ ^/ o1 Q7 T  q; }# F) ?HKKpx2 = 2.61 * ( ( KSeaWaveTemp1 / KwindPeak ).^0.65 ) .* ( ( KSeaWaveTemp1 / KwindPeak < 0.9 ) & ( KSeaWaveTemp1 / KwindPeak >= 0.31 ) );
    ; b0 u  t$ R5 g, `HKKpx3 = 2.28 * ( ( KSeaWaveTemp1 / KwindPeak ).^( -0.65 ) ) .* ( KSeaWaveTemp1 / KwindPeak >= 0.9 );$ ?; @: U! p: W% E% Z# S
    HKKp1 = HKKpx1 + HKKpx2 + HKKpx3;$ G( c" k& J/ V9 y% b
    Temp1x = 1.62 * 1e-3 * U10 / ( g^0.5 ) ./ ( KSeaWaveTemp1 ).^3.5;2 x% [, d3 I0 W) |, f3 F
    Temp2x = exp( -( KwindPeak ./ KSeaWaveTemp1 ).^2 ) .* ( 1.7 .^ Fwk1 );
    0 n- ]2 L" T8 n$ ATemp3x = ( HKKp1 .* ( sech( ( HKKp1 .* ( atan( ( KySeaWaveMatrix ./ KxSeaWaveMatrix ) ) - WindAngle ) ) ) ).^2 );
    . G; V! a* Y8 g1 n. g2 |% SpectrumWind1 = ( Temp1x .* Temp2x .* Temp3x )';
    # o7 {* c1 ^9 T. }fid=fopen('sea_top_wl1000_wh50m.dat','w')' o8 Q* K' v* f4 A) y: O" n1 F
    fprintf(fid,'%10.5f\n',real(wh));8 P4 u; C% Y% `% X4 |
    status=fclose(fid);
    : m/ W" ^& P4 e
    " q" j. T+ k4 i& Y9 p" a

    ) H) |3 t) O' `4 _2 Xfid=fopen('sea_top_wl1000_wh50m.dat','r');/ l, I& i" _. O: n+ @* K7 ~) k
    sea_dem=fscanf(fid,'%g',[800,800]);
    % z$ s3 b* K: h" d% X' {/ I4 Afclose(fid);, B9 s. M. ^* Z- g0 L0 A) G
    %image( x, y, 256 - 255 / ( max( max( real( sea_dem ) ) ) - min( min ( real( sea_dem ) ) ) ) * ( real( sea_dem ) - min( min ( real( sea_dem ) ) ) ) );
    ) v# r8 j6 ?* }& l- \7 ]% 4 G" i0 w% o" q8 _7 ^7 _
    mesh(sea_dem)
    ' I  ]$ N+ T9 g7 h colorbar* c; ^4 J- `/ ?* U$ y6 h& r+ y- ~
    % view(0,90)
    5 x% g* l' b$ a# s3 E! t%colormap(gray)( I6 ~5 z0 ]4 {& C  j
    % This function computes the non-coherent integration improvment
      B/ |( c( ?5 z7 p. {  L% factor using the empirical formula defind in Eq. (2.48)
    , e9 `; r* z4 B9 q4 x( pfact1 = 1.0 + log10( 1.0 / pfa) / 46.6;
      j4 ?2 B/ y7 Y( ufact2 = 6.79 * (1.0 + 0.235 * pd);3 Q# F+ {! p4 m  Z: Y7 e
    fact3 = 1.0 - 0.14 * log10(np) + 0.0183 * (log10(np))^2;# p! {" Y/ f+ m) ~8 F! S
    impr_of_np = fact1 * fact2 * fact3 * log10(np);
    ! z* K0 h9 N+ a: D% d& Jreturn  u' n, G1 x) l+ v2 x+ k; e& |! C7 I; x( D
    * k6 }, V; j! J5 E( L
    ' @0 ~. ?8 S/ R6 {7 r  P
    % SpectrumWind = SpectrumWind1';$ Q+ p: L3 j. C$ F+ d/ f
    SpectrumWind = Temp1x .* Temp2x .* Temp3x;1 ?  N% w# Z& Y/ B
    clear KSeaWaveTemp1 Fwk1 HKKpx1 HKKpx2 HKKpx3 HKKp1 Temp1x Temp2x Temp3x;8 l$ ~5 j2 L' v' c! n2 h
    * Q' z; o, C/ V; x" g/ W0 k: h
    : m" {/ i5 a9 i" L
    1
    5 y" e5 J5 ]2 }% {2
    , d, H  `2 b( }9 j0 x! m. Y: e3! ~  P1 @% F2 \% D5 F& B; j* w) _
    4' m9 b2 U6 d3 H* d. x
    5) n& }& a) c! P6 ^) T( `
    6) K% v% P0 @1 }8 U. _/ I% q& w
    7
    + n+ }) h  Y  Q8 f8 ?' C' i1 B: T8
    - _1 X* j7 \* m$ n9+ k' I5 k6 C+ ~: u9 |1 w; N
    10
    # S; M4 i3 Q8 e3 F# p/ B11/ E8 a) h# O/ \
    12$ g6 U) c* Y7 s
    13
    $ w% g+ K6 ]9 K14( F  l+ o+ T6 E9 S  S
    15+ l# N) b' y+ S/ I- j; m
    16
    ! J, {  |8 p$ x5 K17
    . X' ^, L, l7 u8 C6 W* I: ?18
    5 w+ G1 W* G1 d! V9 W, ]) v6 H19
    # b9 ?) Y* r7 n- |1 }20* T% q( S. u* L: R! M9 p9 s
    21
    # S! g$ x1 {* O4 a) G' f22+ ^) A8 L4 p  ^: w
    23
    ; h4 Y- c$ P* r' r5 `  [) T, T. h24( F/ h: e3 V9 O  j
    25$ x6 v+ y' e: ]; K  z0 x
    263 Z" X- `# c! x! C
    27! o6 q6 F# D6 D) P
    28
    ; w/ _2 n5 X0 T29. {+ E5 K* H* h: M: b3 l. {7 C
    30
    8 Z* n: ]1 l* t1 g+ D( J+ v  p31" y( L& v9 b) \& a* M6 W
    326 B, ~& j2 P( `5 s0 A; d% n( R' l4 ?- d
    33. Q' f' d9 J5 l0 `  _6 r
    34
    9 k/ T7 f& [, O7 W$ i7 m; \6 \, P35
    ; j4 H. l+ I8 z: R0 |/ U( K36
    ; ?! R1 _* p3 \+ h. j' M37
    % z; v" m) K, k38
    + h# _5 _( ~0 [, X8 a39" n7 w- r- K! K" N* [
    40- v" D  ?5 b' ^9 h
    417 x$ |: l' M2 K+ o' ^; }( ~
    42
    # K# g* H* O0 B* z433 {; ^) m+ O0 F* W
    44/ f2 O4 X" v( i2 w
    45
    6 t; i0 W. G' D1 n5 Z8 K; A& ~46
    " ]4 X) I9 B3 c+ d47
    ; N1 F6 G  h; [5 w8 W48
    2 Z9 I  t$ q5 K. i7 f49
    # S- ^! U4 f, W% b+ b5 ]50
    ) e- H, ]& `1 F1 T51
    . w- d1 o+ d4 J% o; U52+ L0 ]( [$ a" N$ |
    53
    : ?7 \8 r4 S1 @6 j2 v- N  |54
    ( J, J3 z8 n7 t55' p/ @8 S6 _/ b! W
    56, V" w0 g$ r8 @6 Y3 C- w
    57( L# N7 K+ n3 _
    58& U5 v% |  }- c- X4 z' h
    59( s/ R. v5 i) g3 y3 i1 z7 s
    60$ F2 o4 V% z* ^2 p0 B3 f
    61
    ! ]- U5 ]& h5 [# G* c5 C62
    / O/ y5 c& x! u: ?637 }6 \. s: d+ C4 D& Q8 L
    647 ?- V0 Z8 I. J& P
    65
    ! Q. N: k9 F$ K* g66
    8 j- p2 q, p# W. z; D& c% K0 Q9 g67
    : A6 g, J% @& Z, x. `1 i8 y68
    , ~/ q: E$ j5 K* V  l, u( D3 _69; E+ O" k% D. P( |/ U7 K
    70
    $ Y4 i6 u) `  [" I. _% y9 ?! i71# k2 [3 |% v1 _& a" ?& q, s
    72
    & i2 T  f9 ?) M: q8 e73
    $ X) C! ~) t! @. L' R74
    * ]& U0 o. r0 S+ x) j8 }75! B3 a$ s, ^+ g' V9 I. X5 Z
    765 Q0 S4 f; X* ^
    776 H' D% n7 {. _6 Z$ p
    78* c0 a4 m8 J5 C+ O5 c
    79
    % w2 x9 D- K5 T8 ]) p4 E& T80" q- V6 x; K+ Y+ ]- D
    81
    ( J2 t. h# d* k( b5 v7 P" `1 p) H2 x828 ]7 c5 O& x9 M& b  L3 p
    83
    ; B1 B4 d; U8 z3 H% g) {841 u+ y2 x& S. V* `8 O* Z) t" O; `2 L
    85
    ; F+ G6 ?; @  {6 a86
    6 ?( C* W8 a2 |8 Z6 a3 d9 a# @, k87
    $ Y! O$ ~$ ~4 M/ q! f1 [- q88
    . D! r# Z- J5 q; ~; ~- J89
    ; [* O8 h8 B3 H  }7 a: L90
    ( e8 r% y* a+ F' q! X' y- r91
    * Z# g2 A; L: R% U4 G7 Z' N, C927 P6 S- x' Q* a) F- e3 j
    93  J; C( j6 x4 [8 X* k; I
    949 W) @5 Z$ G4 k% u4 b7 ~" x& q3 F
    95& p! q- ^7 f9 ~6 }
    96
    3 c+ m9 S, B7 P2 i' B$ d三、运行结果
    2 K" T% ^" h9 v. D
    # }! b4 Z# {, ^' R6 p
    # h+ h3 ]! s4 m7 q7 b2 @
    & k/ D. v/ H* J; `+ B- L
    % r. s9 _) H) a. i
    " \* R2 Y- Q7 R/ D5 d

    % F& j) x* L" Q. w0 W4 B
    # P, ?) p$ F: l0 I$ |' ?: ~2 u
    & ^) j/ i8 x( F0 E1 j6 A
    . O% z0 p! [- J
    . A! ?, b3 v% z
    四、备注
    4 v- B  s1 B& ]8 u3 K7 ?: e$ `4 B版本:2014a6 R  F3 G* U% l7 D
    ————————————————/ L7 \8 w4 }7 J( w' v3 r( T
    版权声明:本文为CSDN博主「紫极神光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ( r% b( v: q- |  y: R8 x: h6 R% d原文链接:https://blog.csdn.net/TIQCmatlab/article/details/1192205996 X" ^! t' A- t' m; d

    ! O/ q' Z) X1 t3 A" n3 l
    : f# @/ |  j" F* G, A# N; ^
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-12 18:12 , Processed in 0.606921 second(s), 51 queries .

    回顶部