功能描述:
function func_Random_Ocean_Initial(n);
global d;
global g;
global H;
global alpha;
global beta;
global waves;
global wave_no_lookup;
global angle_lookup;
global scales;
%以下參數固定化
scales = 100;
d = 20;
g = 9.81;
H = 10;
alpha = 0.0081;
beta = -0.75;
waves(n).amp = 15;
waves(n).xcoeff = 0;
waves(n).ycoeff = 0;
waves(n).w = 0;
waves(n).phase = 0;
for x=1:1000
y = (x-1)/100;
wave_no_lookup(x,1) = y * tanh( y * d );
wave_no_lookup(x,2) = y;
end
for x=1:50
y = (x+10);
wave_no_lookup(x+1000,1) = y * tanh( y * d );
wave_no_lookup(x+1000,2) = y;
end
for x=1:1001
y = pi*(x-501)/1000;
angle_lookup(x,1) = 0.5+(y/pi)+sin(2*y)/(2*pi);
angle_lookup(x,2) = y;
end
for i=1:n
w = (i*15)/n;
waves(i).w = w;
S = (alpha*(g^2)/w^5)*exp((beta*0.04389*g^2)/((H^2)*(w^4)));
k = interp1(wave_no_lookup(:,1),wave_no_lookup(:,2),((waves(i).w)^2)/g);
theta = interp1(angle_lookup(:,1),angle_lookup(:,2),rand())-.8;
waves(i).phase = 2*pi*rand(1,1);
waves(i).xcoeff = k * cos(theta);
waves(i).ycoeff = k * sin(theta);
waves(i).amp = sqrt(40*S/n);
end
|