才开始学习matlab,有很多不懂,运行代码的时候显示:
*索引超出数组元素的数目(1)。
出错 pm3 (line 30) ss=SeaSoctrm(wa(i),sita);_**
百度了很多还是不知道怎么解决,求大佬们点拨
bita=0.74;
g=9.81;
u=10;
t=1;
x=1;
m=200;
n=200;
lx=200;
ly=lx;
ffai=45.*pi./180;
deltasita=pi/60;
deltax=lx/m;
deltay=ly/n;
n1=50;
n2=fix(2.*pi./deltasita)+1;
wmin=g./u.*(log(2.*n1)./bita)^(-0.25);
wa(1)=wmin;
for i=1:n1
if i<n1
deltw(i)=g./u.*((log(n1./(i+0.5))./bita)^(-0.25)-(log(n1./(i-1+0.5))/bita)^(-0.25));
elseif i>1
wa(i)=wa(i-1)+deltw(i-1);
end
sita=-pi;
for j=1:n2
ss=SeaSoctrm(wa(i),sita);
SP(i,j)=sqrt(2.*ss.*deltw(i).*deltasita);
sita=sita+deltasita;
end
end
for i=1:m
y=1;
for j=1:n
z=0;
for h=1:n1
k(h)=wa(h)^2/g;
sita=-pi;
for l=1:n2
ipsl=rnunf()*2*pi;
z1=SP(h,l)*cos(k(h)*x*cos(sita)+k(h)*y*sin(sita)-wa(h)*t+ipsl);
z=z+z1;
sita=sita+deltasita;
end
end
y=y+deltay;
x=x+deltax;
end
end
然后是自定义的函数
function sp=sptr(ww)
g=9.81;
bita=0.74;
u=10;
arfa=8.1*10^(-3);
p=arfa*g^2./(ww^5);
q=-1*bita*(g/(u*ww))^4;
sp=p*exp(q);
end
function dn=Direc_new(ww,fai)
u=10;
g=9.81;
ffai=45.*pi/180;
w0=0.877.*g./u;
if ww<=w0 mu=4.06;
else mu=-2.34;
end
if (abs(fai-ffai)<pi/6|(fai-ffai)>5*pi/6&(fai-ffai)<pi|(fai-ffai)>-pi&(fai-ffai)<-5*pi/6)
p=9.77.*(ww./w0)^mu;
b=gamma(2.*p+1);
d=gamma(p+1);
normp=2.^(1-2.*p).*pi.*b./d^2;
dn=(cos((fai-ffai)./2))^(2.*p)./normp;
else
dn=0;
end
end
function [sspc]=SeaSoctrm(w1,fai)
sspc=sptr(w1).*Direc_new(w1,fai);
end