- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565693 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174931
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
# z) @/ f6 {4 @5 F【数学建模】基于matlab三维海浪模型仿真【含Matlab源码 1159期】
- p7 d6 T- ^3 b: g' e; ?) }一、简介
; Q1 ~! P) I, O基于matlab三维海浪模型仿真:海洋工程领域中的浮式结构物设计,需要精确计算海浪载荷,保证满足稳定性和安全性.该文利用MATLAB对Longuet-Higgins长峰波海浪模型和三维不规则短峰波随机海浪模型进行了仿真研究.结果表明,利用海浪谱来模拟三维随机海浪能够得到比较精确的海浪波面图和波高值,进一步根据流体的势流理论就可以分析计算出该结构物受到的海浪载荷,为校验结构物的结构强度提供了必要的基础。
6 k1 @4 ^! [* M6 u& ]
, b2 m2 x- V5 N" \& D. P& m. l; w" g |6 ^2 v
二、源代码
$ @9 V& a8 X# \; H# J( x- Hclear all;# p% p: v$ Z/ x7 X4 O: P: A
close all;' Q. D. j+ }( `1 [ D
4 g! i8 r, b" ]1 o) h7 p( D
2 f: k) O) b0 }3 p# ~nhFig = 0; % Figure Number;" V6 V/ F* o. k8 Q
SeaRegLx = 40e+3; % Sea region length, unit: m7 i: N7 D- W8 L& [$ \
SeaRegLy = 40e+3; % Sea region length, unit: m; h+ x( A/ G; z! p T" x
% 根据频域采样定理,在确定采样周期即波束的足迹宽度之后,. _0 o1 j. D4 x1 H: r
% 可以利用时域采样的采样点数目(通过空间频谱的宽度即根据时域采样定理计算出采样点数),实现频域采样.: g' n& m' n6 K$ ?7 ~9 d! U6 h$ f+ ^
% 对于海洋波谱而言,波谱宽度是非常宽的,因此其波谱宽度一般是指包括了大部分能量(或者说主要的能量部分)的不完全谱宽度* N/ D. f2 Q9 Y5 E* G; }( H. t
% 所以这里事先根据波谱函数计算主要能量部分对应的谱宽度, l( ]3 f7 ]2 S/ ^9 d! r( Z
xSampleStep = 50; % unit: m, s; j9 [$ C) h$ p5 V/ p0 p
ySampleStep = 50;4 }* M% f9 F$ T4 J; H
xNs = round( SeaRegLx / xSampleStep );3 s$ C3 v0 L: |! q
yNs = round( SeaRegLy / ySampleStep );
9 {6 E$ l7 b: {6 J3 `( a/ q* ~, \9 a6 G
- `+ K/ ~2 g$ G
x = linspace( -SeaRegLx / 2, SeaRegLx / 2, xNs );
$ G' F) v6 h+ D3 V" x) ?0 _y = linspace( -SeaRegLy/ 2, SeaRegLy / 2, yNs );3 {* E- u8 @5 P e9 y
4 o% l, P5 B2 e: ^
3 j$ d. u- [6 U% 海浪谱仿真4 t" P0 h2 a% x' G
g = 9.8; % gravity acceleration
( A9 K" O {5 N$ m% swell wave spectrum parameter
+ ~8 ?4 t% G: P5 x: U* o8 D) J- q$ v5 A8 rSwellWaveLength = 1000; % 涌浪波长
" b- I' F, O9 ?6 F7 vKswellWavePeak = 2 * pi / SwellWaveLength;
$ @" B/ ?$ ?& g; GSwellAngled=0;
( R6 N y; T- i# q: ISwellAngle = SwellAngled/ 180 * pi; % 涌浪与观测向夹角
/ N6 G9 A) Q2 x5 P% WKxswellWavePeak = KswellWavePeak * cos( SwellAngle );6 F5 y8 ?& Z X5 @- Y
KyswellWavePeak = KswellWavePeak * sin( SwellAngle );7 X0 o m$ k! ]# |$ ?8 ?5 |
SigmaKx = 2.5e-3; % 涌浪谱宽度
1 f. c) P7 R( c* g4 ^* g% o* qSigmaKy = 2.5e-3;
! }3 X. P: c) _SigmaHSwell = 2; %涌浪波高
: u2 O& b. p- c3 `0 j% wind wave spectrum parameter* ~- K# N) g. B3 g" |
WindAngle = 45 / 180 * pi; % 风向与观测向夹角
: o, a1 J9 l0 fU10 = 12; % 10米高处海面风速 % 5m/s, 10m/s, 15m/s 的风浪谱宽度分别为 1.5, 0.4, 0.15.对应的最大空间采样间隔为2m, 10m, 20m
4 U+ s6 l% S1 B! r% D" K+ X# R" ZKwindPeak = g / ( 1.2 * U10 )^2;5 {8 @& A8 }; K1 o! K
% sea wave spectrum parameter
, ^6 K9 J R: Z: KNxSeaWave = xNs; % 频域采样点数,方便傅立叶变换% _; k" H3 c: \ R& ^
NySeaWave = yNs;
: T* K1 O/ j( r, X/ P& v4 CKxSeaWave = 2 * pi / SeaRegLx * ( -xNs / 2 : 1 : xNs / 2 - 1 );, ~; @( W; F) _) |0 T# L
KySeaWave = 2 * pi / SeaRegLy * ( -yNs / 2 : 1 : yNs / 2 - 1 );
8 G/ ]) W. H, m: OKxSeaWaveTicks = KxSeaWave;$ r8 E6 z6 b5 B/ v. q1 l7 D
KySeaWaveTicks = KySeaWave;, a6 c& E( l6 k" `
KxSeaWave = ( KxSeaWave == 0 ) * ( max( KxSeaWave ) * 1e-16 ) + KxSeaWave; % avoid divided by 00 f8 i; J. M" h9 [0 G+ I, ?
KySeaWave = ( KySeaWave == 0 ) * ( max( KySeaWave ) * 1e-16 ) + KySeaWave; % avoid divided by 0
1 @! S0 T& R7 r' m
{/ @7 L3 W/ [/ l! _) B/ J2 X/ c# `7 b
% swell wave spectrum
8 D+ k4 e0 u+ Y' h3 z5 lSpectrumSwell = zeros( NySeaWave, NxSeaWave );* Z5 V; r. F1 X' J2 q5 V% N2 e
Temp1 = ones( NySeaWave, 1 ) * ( KxSeaWave - KxswellWavePeak ) / SigmaKx;& P# b, _; n& }
Temp2 = ( KySeaWave - KyswellWavePeak )' / SigmaKy * ones( 1, NxSeaWave );+ ?9 k/ I0 _2 W L' S) k
SpectrumSwell = SigmaHSwell^2 / 2 / pi / SigmaKx / SigmaKy * exp( -0.5 * ( Temp1.^2 + Temp2.^2 ) );
" Y; ?) G6 q# K; ?9 |5 j7 m, Oclear Temp1;$ c! N# z2 U9 X+ O
clear Temp2;
s- d' B/ Y) r& T! ifigure;
* [8 J0 _9 y- g! G) Q. dcolormap(gray(256));$ u! u5 u5 d- P+ n w% R' g" o* @
image( KxSeaWave, KySeaWave, 256 - 255 / ( max( max( abs( SpectrumSwell ) ) ) - min( min ( abs( SpectrumSwell ) ) ) ) * ( abs( SpectrumSwell ) - min( min ( abs( SpectrumSwell ) ) ) ) );) Q1 }4 I7 p# V, U" t' u
axis('xy');
# L9 a3 y- [! N* @7 {! Vxlabel( 'kx:X方向波数');8 l. H2 E, J3 _+ L! A
ylabel( 'ky:Y方向波数');
4 ^9 @3 Q/ T0 ]" g6 Rtitle( '涌浪谱');
/ s# X# H" d6 j
5 M# r0 |/ @) j
8 x+ X0 F+ |- M# M" F2 s- J& ZKxSeaWaveMatrix = ones( NySeaWave, 1 ) * KxSeaWave;7 _/ e# W( v" F1 r2 C( V. S
KySeaWaveMatrix = KySeaWave' * ones( 1, NxSeaWave );# W' b* n, {# d M5 |: v
KSeaWaveTemp1 = ( sqrt( KxSeaWaveMatrix.^2 + KySeaWaveMatrix.^2 ) );, [3 Q. i$ W8 b' j3 |
Fwk1 = exp( - 1.22 * ( sqrt( KSeaWaveTemp1 ./ KwindPeak ) -1 ).^2 );3 @" r6 x' g7 t9 q8 K4 B) K
HKKpx1 = 1.24 * ( ( KSeaWaveTemp1 / KwindPeak < 0.31 ) & ( KSeaWaveTemp1 / KwindPeak >= 0 ) );& w5 I2 K9 K+ L* g+ r. V7 g9 M7 j
HKKpx2 = 2.61 * ( ( KSeaWaveTemp1 / KwindPeak ).^0.65 ) .* ( ( KSeaWaveTemp1 / KwindPeak < 0.9 ) & ( KSeaWaveTemp1 / KwindPeak >= 0.31 ) );% x, X$ V- s, @* x" E+ d& i+ F
HKKpx3 = 2.28 * ( ( KSeaWaveTemp1 / KwindPeak ).^( -0.65 ) ) .* ( KSeaWaveTemp1 / KwindPeak >= 0.9 );8 b$ h# k- E& X @8 Z
HKKp1 = HKKpx1 + HKKpx2 + HKKpx3; L6 a( u" _& C9 B; B5 x! m
Temp1x = 1.62 * 1e-3 * U10 / ( g^0.5 ) ./ ( KSeaWaveTemp1 ).^3.5;: B" ?! ?$ L' \4 V# P5 J4 t- S
Temp2x = exp( -( KwindPeak ./ KSeaWaveTemp1 ).^2 ) .* ( 1.7 .^ Fwk1 );2 d$ ^3 l* f1 W) _; o
Temp3x = ( HKKp1 .* ( sech( ( HKKp1 .* ( atan( ( KySeaWaveMatrix ./ KxSeaWaveMatrix ) ) - WindAngle ) ) ) ).^2 );6 R6 D; r) \6 ~( \8 c/ s
% SpectrumWind1 = ( Temp1x .* Temp2x .* Temp3x )';
+ @4 \! A+ h+ ~6 Rfid=fopen('sea_top_wl1000_wh50m.dat','w')1 { w, a4 N9 M! h5 k
fprintf(fid,'%10.5f\n',real(wh));
6 x$ _7 M' e9 ustatus=fclose(fid);2 d1 J% t7 G5 V2 j9 m6 \
" [$ `9 e. f: ?% R
0 k; B# v5 C& H! Y
fid=fopen('sea_top_wl1000_wh50m.dat','r'); v3 V5 E0 U$ {% W2 {- d v! m
sea_dem=fscanf(fid,'%g',[800,800]);# z$ ^8 K! }9 d u& \1 D& P! N
fclose(fid);
# P* }: M8 L* A5 T$ [. K%image( x, y, 256 - 255 / ( max( max( real( sea_dem ) ) ) - min( min ( real( sea_dem ) ) ) ) * ( real( sea_dem ) - min( min ( real( sea_dem ) ) ) ) );' j+ d5 } t& B! I7 g
%
r, [2 o L& b8 V mesh(sea_dem)9 H ]: V. l! p- `$ ]: L# D
colorbar
- z4 Q7 W5 z8 G0 I' O% view(0,90)& I' a; Z, {# x% \# d
%colormap(gray)
) V, { W3 U: X7 I: m% This function computes the non-coherent integration improvment
0 X0 j8 J! X- l3 M9 y% factor using the empirical formula defind in Eq. (2.48)
2 ]: `1 K. W8 z8 Q% F- nfact1 = 1.0 + log10( 1.0 / pfa) / 46.6;7 C# n8 K3 J& Y' B7 [2 ?2 q i+ G
fact2 = 6.79 * (1.0 + 0.235 * pd);
7 ~. _% |2 e! O' C) x6 {1 b' ufact3 = 1.0 - 0.14 * log10(np) + 0.0183 * (log10(np))^2;
$ K) E. K, x( C; wimpr_of_np = fact1 * fact2 * fact3 * log10(np);
+ C' Q4 p% G U$ Y0 w) preturn% r0 K# X1 v( p. u+ ~8 n
- e* k: a, } S6 }# ?, m
4 W& C7 I* d, D% SpectrumWind = SpectrumWind1';6 b* v' L H& q) S/ D
SpectrumWind = Temp1x .* Temp2x .* Temp3x;3 M4 ?( u* j& c/ G- Y# b) X
clear KSeaWaveTemp1 Fwk1 HKKpx1 HKKpx2 HKKpx3 HKKp1 Temp1x Temp2x Temp3x;9 A3 F) x( e& Y. _7 G# T
) {0 y) d! r% M0 a7 l" ^
+ A% f1 P+ J2 \! X$ F5 L G15 J1 ]/ G6 S. s- S5 X# Z
2% v7 }7 h" y6 r5 }6 X
39 x4 _, w" g6 Q
4
: v' P9 {! y) E% J9 C' I7 \5* R0 _! C7 n- p) L; `& i
69 h8 j* m9 K4 F# G; q9 P0 H
7
* p: }' s, p9 d' A: t4 k, s8
) ~! z* f- L% k& e9
/ B9 ^6 l8 W( A* r10
+ B$ K) d6 }! @6 [) C11 a3 a @7 Z3 R) ^4 M6 ~+ v
12
) a, ?5 T" ^# m& A: C13; M% p4 z( H; D s, v% f) g' ~9 y
14
# O4 K: t. Y) s: m9 B9 z156 C9 @( P8 b# S& r& R7 `
16 Q& c* h' j/ Y" }
171 z) N/ M1 t6 K; j
18* G1 u/ |% u7 h) z' Q" {
19' k+ f8 Q' F7 c/ V1 Q$ o
20
3 H- z& b. e' t/ ]21
2 T5 m& ^$ {2 H1 }. s22
) B7 c- N+ w+ S8 q" E, h X9 V23
% t; _4 K0 g' H" \! \. i24
: K. T9 b/ l6 z25
( h+ l6 q2 m: S) F; i269 a" l1 b" P, u+ n
27# C1 d$ v5 z) v, E4 v3 D+ \. E1 p
28
* i: E4 M: N/ {29
3 \% P$ v7 Y% k3 ]+ ]$ u30$ o3 R: E* Z- r- d7 V1 p k
31
' [3 Y% \! q, B$ ]* F$ U32
+ N' K5 G. k1 d8 i: d7 T$ V33' p7 W4 b4 r: r4 ~6 j) M
34
" l5 R2 c; r7 }1 J35
) B$ s6 `4 _7 D1 m/ b1 d0 N36
1 S, [9 Z$ q) x5 z, s& ]37
& `# R/ j p4 u4 q% @' K4 k3 p38: N! K/ e' E" {1 y
39) h* D# q. }4 z
40
: r3 `/ c+ K0 V41# Q' I3 i$ b& L
42
: n% ?8 E$ a1 g43
. o& _1 W9 k4 W& N3 s440 M; G- s& n! u; a
45
# c) l7 F& H; d9 F- N46
; t; D+ x- [9 k6 C47
, e U, ]1 K3 W48
$ n _$ `8 d$ X4 n# q49
% E7 u$ w5 M+ g" a508 X1 Y9 }8 @7 G# Z
51
' i8 e% Q+ H5 j4 e/ n- _2 K52
6 U5 b/ H7 v7 c+ q+ J% w' P, \53
& T! i8 \8 H& k; B" n) [3 G54
$ H' {6 q, X5 ^4 z55
, r6 x+ Y8 d; Z56* n+ v5 ~9 x6 V" c
57
8 }" m! E# n1 q3 q) u3 r; T58
s: j* P1 v2 h) |/ ?7 @59: Q! S1 T! F/ D$ o5 G$ `. x6 r- \4 b
602 a* _& \# |3 g. ~0 y
61
8 E6 @+ w+ H3 N6 F! l) ^4 T62
% R6 c! n0 [/ i+ j9 o9 h# x$ y8 o63
2 T! l9 P4 S7 H% y4 ]64
2 m1 n7 g& {3 Q3 E! w8 S65: C, r# f9 L) {6 U
662 L, J% T5 U0 L: O1 K( E+ `; d
67
4 \& Y* E- r/ H- R68
4 g$ N' k4 s+ _, K% u69
6 p) T* [! m( A' k! W70
8 ^ L Q7 n0 t& `: h71
3 Q2 f' d# P/ ~ H7 F# D) M1 l72* k1 V( \8 K. r
73- N2 \% D8 {3 j4 `0 x5 d
74
7 u7 ^0 T, |' g$ x; b/ Z6 C- I75
' y( s3 ]1 g" W2 D76
/ @: `; a- Z7 J& V' Y772 D- B; I$ Q) a' _$ c
78' z7 z7 w {0 z! Z, g* h; Q
79
& r, _& L( X4 p+ u, U8 _805 U$ C; U4 e3 d3 {# y4 V/ ]: p
81: z# r1 U+ a* S* E1 _/ t' [% |
82: Y% X$ R- o) {1 v2 ]3 O) ?
83. A$ }7 \- ~0 F% q4 G0 r
84
; ]* `% q+ \7 M3 t- b85
, A$ ]3 B/ l/ I; @/ J86
! Y$ R8 B: g2 w, _87
7 z, n2 A! x. Z8 G( ]3 m) S882 J! ~) f$ r# j* k
89( W0 O8 M* i4 g, x: M' ]8 U* q
90, W. r5 u- u9 }1 U# u
91% T9 I/ y8 G, U( n( U
92
, f$ d% g) y" C+ a9 W93
: v( w S% m$ e0 A Z( c: Z94
2 R# L# H( s& Z/ r# O" t2 G954 O d( X1 G" h8 \
96& |) Z6 W9 \( F* `/ R
三、运行结果
2 ]- ^, e! J" ^ W
. H9 v: @6 m+ k* E! f+ r }. a4 m% P7 v7 e$ H
L& {9 M0 `; L; H' I3 ]' @! A5 l; C C Y/ N0 U* i
7 H& l; @( F9 t1 }+ X" q2 f% `! l9 A* |' L
4 ]7 v6 I: Z' |, k7 H9 H+ A
. ~. l7 T2 U/ O g t1 R5 p+ I$ J- X% t5 h) p w& a
4 X! s* _/ Q6 r$ E/ i3 _/ q$ C+ r四、备注
* h4 T1 f/ O' c) d7 h1 `) ?版本:2014a3 V b+ l8 y# D/ ]1 k( q( v
————————————————: S: s2 k4 L+ ^
版权声明:本文为CSDN博主「紫极神光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
! q9 o& t. Z9 _: z/ a8 S/ O原文链接:https://blog.csdn.net/TIQCmatlab/article/details/119220599; ^, a9 X6 i$ H+ x. W& ^) ?" T: I
1 m3 T& R/ q9 C! l+ j9 p' P
$ e) n( N( v3 F# d6 V6 v& L |
zan
|