微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SciLab中的未定义变量“ xgetfile”

如何解决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 举报,一经查实,本站将立刻删除。