主要問題:
1、代碼本來應該分兩部分,都被混到壹起了。而且妳可能是直接在命令窗口中直接貼代碼運行,這對於函數而言是不允許的,應該保存成M文件再運行。
2、幾個低級錯誤:
(1)變量名錯誤:y=length(y);應為n=length(y);
(2)調用函數時參數數量錯誤:www(i,j)=cc(q,x(i),y(j),1.5,2.5,t,1);應為www(i,j)=cc(q,x(i),y(j),1.5,2.5,t);
(3)點乘缺少乘號:w=q./(pi*miu*sy*sz).exp(-(y.^2./(2*sy^2)+z.^2./(2*sz^2)));應為w=q./(pi*miu*sy*sz).*exp(-(y.^2./(2*sy^2)+z.^2./(2*sz^2)));
改後的代碼:
function?zd1668380218552966787q=400000;
t=120;
x=linspace(0,50,100);
y=linspace(-50,50,100);
m=length(x);
n=length(y);
www=zeros(m,n);
for?i=1:m
for?j=1:n
www(i,j)=cc(q,x(i),y(j),1.5,2.5,t);
end
end
[X?Y]=meshgrid(x,y);
X=X*100;
Y=Y*100;
surf(X,Y,www')
function?w=cc(q,x,y,z,miu,t)
if?x>1000
a1=0.850834;
r1=0.602052;
else
a1=0.901074;
r1=0.425809;
end
if?x>500
a2=2.10881;
r2=0.000211545;
elseif?x>300&&x<500
a2=1.51360;
r2=0.00854771;
else
a2=1.12154;
r2=0.0799904;
end
sy=r1*x.^a1;
sz=r2*x.^a2;
if?0.5<t&&t<1
sy=r1*x.^a1*(2*t).^0.2;
sz=r2*x.^a2;
else
sy=r1*x.^a1*(2*t).^0.3;
sz=r2*x.^a2;
end
w=q./(pi*miu*sy*sz).*exp(-(y.^2./(2*sy^2)+z.^2./(2*sz^2)));