如何解决SciLab中的未定义变量“ xgetfile”
[\ n输入样本大小:28428
\ n输入公差极限:100
未定义变量:xgetfile] 1
基本上,当我运行从互联网上下载的该程序时,它总是告诉我变量xgetfile是未定义的,而不是提示我选择其中包含数据的文件。该程序的完整代码粘贴在下面。我的问题是如何解决此问题并能够输入我的数据。显示xgetfile的行就在顶部附近,因此您不必做过多的阅读即可。
n=0;
tol_lim=0;
// ENTERING SAMPLE SIZE
while n<=5 | n==[],n=input("\n ENTER SAMPLE SIZE:");
if (n<=5) printf("\n\n SAMPLE SIZE SHOULD BE GREATER THAN 5\n\n");end
if n==[] printf("\n\n SAMPLE SIZE CANNOT BE LEFT BLANK\n\n");end
end
//ENTERING TOLERANCE LIMIT
while tol_lim <= 0 | tol_lim==[],tol_lim=input("\n ENTER TOLERANCE LIMIT:");
if (tol_lim<=0) printf("\n TOLERANCE LIMIT SHOULD BE GREATER THAN 0\n\n");end
if tol_lim==[] printf("\n TOLERANCE LIMIT CANNOT BE LEFT BLANK\n\n");end
end
//INITIALIZING VARIABLES
F = zeros(n,3);
Y = zeros(n,1);
OY = zeros(n,1);
EY = zeros(n,1);
DOY = zeros(n,1);
Estimated_Y = zeros(n,1);
d = zeros(3,1);
THETA = zeros(3,1);
GN1=0;GN2=0;GN3=0;
sig=0;y=0;
sigma_hat_square=0; y_bar=0; dff=0; R_square=0;
U_t_hat=0; U_t_hat_square=0; U_t_minusone_hat=0; dd=0; DW=0;Covariance_Matrix=zeros(3,3);
f_obs=0; l_obs=0; r=0; D1=0; D2=0;
S1=0;S2=0;S3=0;D1=0;D2=0;r=0;sum_Y=0;Y_bar=0;Y_square=0;D_den=0;D=0;
AY=zeros(n,1);
OBS=zeros(n,1);
EST=zeros(n,1);
g=[];gh=[];
EXISTING_DATA='';
//CHOOSING INPUT EXCEL DATA FILE
gh=xgetfile();
while gh==[],gh=xgetfile('*.*',title='CHOOSE A FILE NAME');
if g==[] printf("FILE NAME CANNOT BE LEFT BLANK");end
end
Sheets=readxls(gh);
EXISTING_DATA=Sheets(1);
typeof(EXISTING_DATA);
printf("\n\n");
//disPLAYING EXISTING DATA FROM EXCEL FILE
EXISTING_DATA
for i=2:(n+1),DOY(i-1,1)=EXISTING_DATA(i,2);end
while f_obs<=0 | f_obs==[],f_obs=input("\n ENTER FirsT OBSERVATION NO:");
//if (f_obs<=0) printf("\n\n IT SHOULD BE GREATER THAN 0\n\n");end
//if f_obs==[] printf("\n\n IT CANNOT BE LEFT BLANK\n\n");end
end
while l_obs<f_obs | l_obs==[],l_obs=input("\n ENTER LAST OBSERVATION NO:");
//if (l_obs<=f_obs) printf("\n\n IT SHOULD BE GREATER THAN FirsT OBSERVATION NO:\n\n");end
//if l_obs==[] printf("\n\n IT CANNOT BE LEFT BLANK\n\n");end
end
for i=1:n,OY(i,1)=log(DOY(i,1));end
r = ((l_obs - f_obs) + 1)/3;
for i=1:r,S1 = S1 + OY(i,1);end
for i=r+1:2*r,S2 = S2 + OY(i,1);end
for i=2*r+1:3*r,S3 = S3 + OY(i,1);end
D1 = S1 - S2;
D2 = S2 - S3;
A=0;B=0;C=0;
// CALculaTING INITIAL ESTIMATES OF A,B,C
C = (D2/D1)^(1/r);
B = ((1 - C)/C)* [(D1^3)/(D1-D2)^2];
A = (1/3)*(1/r)*[(S1 + S2 + S3) - (D1^2 + D1*D2 + D2^2)/(D1 - D2)];
Ini_A=A; Ini_B=B;Ini_C=C;
for i=1:n,F(i,1)=1;end
for i=1:n,2)=C^i;end
for i=1:n,3)=i*B*(C^(i-1));end
for i=1:n,EY(i,1)=A + B*(C^i);end
for i=1:n,Y(i,1) = OY(i,1) - EY(i,1);end
d = inv(F'*F)*F'*Y;
THETA(1,1) = A + d(1,1);
THETA(2,1) = B + d(2,1);
THETA(3,1) = C + d(3,1);
if abs(d(1,1)/A) < tol_lim & abs(d(2,1)/B) < tol_lim & abs(d(3,1)/C) < tol_lim
break;
end
for cnt=1:100
A = THETA(1,1);
B = THETA(2,1);
C = THETA(3,1);
for i=1:n,1)=1;end
for i=1:n,2)=C^i;end
for i=1:n,3)=i*B*(C^(i-1));end
for i=1:n,1)=A + B*(C^i);end
for i=1:n,1);end
d = inv(F'*F)*F'*Y;
THETA(1,1);
THETA(2,1);
THETA(3,1);
if abs(d(1,1)/C) < tol_lim
break;
end
end
A=THETA(1,1);
B=THETA(2,1);
C=THETA(3,1);
for i=1:n,GN1 = GN1 + (OY(i,1) - A - B*(C^i));
GN2 = GN2 + (OY(i,1) - A - B*(C^i))*(C^i);
GN3 = GN3 + (OY(i,1) - A - B*(C^i))*B*i*(C^(i-1));
end
p_GN1=GN1;
p_GN2=GN2;
p_GN3=GN3;
for i=1:n,1) = A + B*(C^i);end
for i=1:n,1);end
for i=1:n,sig =sig + Y(i,1)*Y(i,1);end
sigma_hat_square = sig/n;
for i=1:n,y = y + OY(i,1);end
y_bar = y/n;
for i=1:n,dff = dff + (OY(i,1) - y_bar)*(OY(i,1) - y_bar);end
R_square = 1 - (sig/dff);
for i=1:n,1)=1;
F(i,2)=C^i;
F(i,3)=i*B*(C^(i-1));
end
//Showing Covariance Matrix
Covariance_Matrix = sigma_hat_square*inv(F'*F);
G = zeros(3,3);
G = inv(F'*F);
//Showing Standard Errors
std_err_A = sqrt((sigma_hat_square)*G(1,1));
std_err_B = sqrt((sigma_hat_square)*G(2,2));
std_err_C = sqrt((sigma_hat_square)*G(3,3));
for i=1:n,U_t_hat_square = U_t_hat_square+ ((OY(i,1) - A - B*(C^i))^2);
end
for i=2:n,U_t_hat = OY(i,1) - A - B*(C^i);
U_t_minusone_hat = OY(i-1,1) - A - B*(C^(i-1));
dd = dd + (U_t_hat - U_t_minusone_hat)*(U_t_hat - U_t_minusone_hat);
end
DW = dd/U_t_hat_square;
for i=1:n,1);end
for i=1:n,sum_Y = sum_Y + OY(i,1);end
Y_bar = sum_Y /n;
for i=1:n,Y_square = Y_square + Y(i,D_den = D_den + (OY(i,1) - Y_bar)*(OY(i,1) - Y_bar);end
D = Y_square/D_den;
printf("\n\n\nREPORT SHOWING RESULTS\n");
printf("----------------------\n\n\n");
printf("Sample Size = %d Tolerance Limit=%f\n\n",n,tol_lim);
printf("ParaMETER INITIAL ESTIMATES FINAL ESTIMATES STD. ERRORS DW ");
printf("\n------- ----------------- ---------------- ------------ ---- \n");
printf("\nA %f %f %f %f",Ini_A,A,std_err_A,DW);
printf("\nB %f %f %f ",Ini_B,std_err_B);
printf("\nC %f %f %f ",Ini_C,C,std_err_C);
printf("\n\n\n ");
printf("No. of Iterations: = %d\n\n",cnt+1);
printf("GN1 = %.7f\n\n",p_GN1);
printf("GN2 = %.7f\n\n",p_GN2);
printf("GN3 = %.7f\n\n",p_GN3);
printf("Sigma_Hat_Square= %f \t\t R_Square= %f\t D=%f",sigma_hat_square,R_square,D);
printf("\n\n COVARIANCE MATRIX \n");
printf("-------------------------\n");
printf("%f\t\t%f\t\t%f\n",Covariance_Matrix(1,1),2),3));
printf("%f\t\t%f\t\t%f\n",Covariance_Matrix(2,3));
printf("%f\t\t%f\t\t%f",Covariance_Matrix(3,3));
printf("\n\n Residuals\n\n ");
printf("Y = %f\n",Y);
x=input("\n\n Exit Program??...Press 1 to exit or enter to save");
if (x==1)
exit();
end
g=x_dialog(['enter file name:']);
u=mopen(g,'w');
mfprintf(u,"REPORT SHOWING RESULTS\n");
mfprintf(u,"----------------------\n\n\n");
mfprintf(u,"Sample Size = %d Tolerance Limit = %f\n\n\n",tol_lim);
mfprintf(u,"ParaMETER INITIAL ESTIMATES FINAL ESTIMATES STD. ERRORS DW ");
mfprintf(u,"\n------- ----------------- ---------------- ------------ ------ \n");
mfprintf(u,"\nA %f %f %f %f",DW);
mfprintf(u,"\nB %f %f %f ",std_err_B);
mfprintf(u,"\nC %f %f %f ",std_err_C);
mfprintf(u,"\n\n\n ");
mfprintf(u,"No. of Iterations: = %d\n\n",cnt+1);
mfprintf(u,"GN1 = %.7f\n\n",p_GN1);
mfprintf(u,"GN2 = %.7f\n\n",p_GN2);
mfprintf(u,"GN3 = %.7f\n\n",p_GN3);
mfprintf(u,"Sigma_Hat_Square= %f \t\t R_Square= %f\t D=%f",D);
mfprintf(u,"\n\n COVARIANCE MATRIX \n");
mfprintf(u,"-------------------------\n");
mfprintf(u,"%f\t\t%f\t\t%f\n",3));
mfprintf(u,"%f\t\t%f\t\t%f",3));
mfprintf(u,"\n\n SHOWING RESIDUALS\n\n ");
mfprintf(u,"Y = %f\n",Y);
mclose(u);
t=[1:1:n]';
Estimated_Y=A + B*(C^t);
for i=1:n,OBS(i,1)=OY(i,1);end
for i=1:n,EST(i,1)=Estimated_Y(i,1);end
plot2d(t,[OBS,EST],[2,3],leg="Observed@Estimated",nax=[1,1,n]);
legends(['t';'(Year)'],[1,1],opt="lr")
legends(['Y';'(Dependent Variable)'],opt="ul")
xtitle("GOMPERTZ GROWTH CURVE");
end_prog=input("\n\n Continue??..PRESS 1 TO CONTINUE.....PRESS 2 TO EXIT");
if (end_prog==1)
exec("C:\SCILAB\Gompertz.sce");
end
if (end_prog==2)
printf("CLOSING PROGRAM........");
exit;
end
解决方法
您的Scilab程序似乎是为旧版本编写的,因为xgetfile
在5.2版(2001年)中消失了。只需将行替换为
gh=uigetfile('*.*','CHOOSE A FILE NAME');
程序的这一部分将起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。