小弟没学过Matlab,程序是别人给的,运行后显示Not enough input arguments。不会看程序,求大神指导下。
function f=wucha(q) %净雨相对误差(以百分数表示)
h=load('D:\Matlab\work\roer0308.txt');
rex=h(:,1);
sizex=size(rex);
n=sizex(1,1);
x=rex;
x=sort(x); %从小到大排列
jz=mean(x); %均值
bzc=std(x); %标准差
average(1,1)=x(1,1);
squre2(1,1)=x(1,1)^2;
squre3(1,1)=x(1,1)^3;
i=1;
while i
average(i+1,1)=x(i+1,1)+average(i,1);
squre2(i+1,1)=x(i+1,1)^2+squre2(i,1);
squre3(i+1,1)=x(i+1,1)^3+squre3(i,1);
i=i+1;
end
average_x=average(n,1)/n;
squre2_x=squre2(n,1)/n;
squre3_x=squre3(n,1)/n;
s(1,1)=(x(1,1)-average_x)^2;
h(1,1)=(x(1,1)-average_x)^3;
j=1;
while j
s(j+1,1)=(x(j+1,1)-average_x)^2+s(j,1);
h(j+1,1)=(x(j+1,1)-average_x)^3+h(j,1);
j=j+1;
end
s=sqrt(s(n,1)/(n-1));
[mu sigma muci sigmuci]=normfit(x);%mu为均值,sigma为标准差
h=h(n,1)/n/s^3;
l=(x-average_x)/s;
r=kstest(l); %判断是否是正态分布,如果为0,则为正态分布,如果为1则不是正态分布
B=average_x/s;
%toc;
x1=average_x-5*s;
x2=average_x+5*s;
z=x/5/s;
p=-1:0.01:1; %积分的范围
m1=average_x;
m2=squre2_x;
m3=squre3_x; %一阶矩、二阶矩、三阶矩
f=(1-trapz(p,5*s*p.*exp(q(1).*p+q(2).*p.^2+q(3).*p.^3))/m1/trapz(p,exp(q(1).*p+q(2).*p.^2+q(3).*p.^3)))^2+(1-trapz(p,(5*s*p).^2.*exp(q(1).*p+q(2).*p.^2+q(3).*p.^3))/m2/trapz(p,exp(q(1).*p+q(2).*p.^2+q(3).*p.^3)))^2+(1-trapz(p,(5*s*p).^3.*exp(q(1).*p+q(2).*p.^2+q(3).*p.^3))/m3/trapz(p,exp(q(1).*p+q(2).*p.^2+q(3).*p.^3)))^2;
% q0=[0.1,0.1,0.1]; %y的初始值
% options(2)=0.00000001; %解的精度
% options(14)=500; %最大迭代次数
% [q,fm]=fminsearch('wucha',q0,1.0e-10) %y的计算结果
% options(8) %f的结果
% p=jz-5*bzc:0.01:jz+5*bzc;
% q=[q(1)/5/bzc q(2)/25/bzc/bzc q(3)/125/bzc/bzc/bzc];
% d=-log(trapz(p,exp(q(1)*p+q(2)*p.^2+q(3)*p.^3))) %求出y(0)
% ff=exp(d+ q(1)*p+ q(2)*p.^2+ q(3)*p.^3); %求得的函数
% plot(p,ff); %求函数曲线
% ylabel('Probability Density Distribution');
% xlabel('Relative error of runoff volume(%)');
% xlabel('Relative error of peak discharge(%)');
% xlabel('Forecasting error of time to peak(h)');
% hold on;
% l=normpdf(x,jz,bzc);
% plot(x,l,'-.')
跪求大神指导呀