| Author | 
                
                  Topic   | 
                
                
                 
                 
                 
                 
                 
                                 | 
               
              
                | 
                 punktrocker 
                 
                
                Germany 
                5 Posts  | 
                
                  
                    
                      
                       Posted - 08/30/2017 :  10:50:15 AM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       Hello everybody, I´m trying to use my user defined Fitting function written in OriginC in a Labtalk script. I added #pragma labtalk(1) in the ".fit" files and the function appears when i write "list f;" in the command window.
  My Problem is when i want to use the Fitting like it works in the NLfitting Dialog Box in my Labtalk script, i Need to call the Parameter initialisation first "_nlp....fit" and this funtions wants a curve type variable which doesn´t exist in Labtalk as far a i know.
  code of my "_nlsf...fit" " #pragma numlittype(push, TRUE) #pragma numlittype(push, TRUE) #pragma warning(error : 15618) #include <origin.h> #pragma labtalk(1)
  void _nlsfGlassTransition_Linear( // Fit Parameter(s): double x1, double y1, double x2, double y2, double x3, double y3, // Independent Variable(s): double x, // Dependent Variable(s): double& y) { 	// Beginning of editable part 	if (x< x3) 	y=(y1*(x3-x)+y3*(x-x1))/(x3-x1); 	else 	y=(y3*(x2-x)+y2*(x-x3))/(x2-x3); 	// End of editable part }
  "
  code of my "_nlp...fit"
  " #pragma numlittype(push, TRUE) #pragma numlittype(push, TRUE) #pragma numlittype(push, TRUE) #include <origin.h> #pragma labtalk(1)
  void _nlsfParamGlassTransition_Linear( // Fit Parameter(s): double& x1, double& y1, double& x2, double& y2, double& x3, double& y3, // Independent Dataset(s): vector& x_data, // Dependent Dataset(s): vector& y_data, // Curve(s): Curve x_y_curve, // Auxilary error code:  int& nErr) { 	// Beginning of editable part 	int n1,n2,n3; 	 	x_data.GetMinMax( x1, x2, &n1, &n2 ); 	x3 = x1 + (x2 - x1)/2; 	 	y1= y_data[n1]; 	y2=y_data[n2]; 	 	vector vd; 	vd = abs (x_data - x3); 	double xta, xtb; 	vd.GetMinMax( xta, xtb, &n3); 	y3= y_data[n3];	//Code to be executed to initialize parameters 	// End of editable part } " and that is what i tried in my command window:
  double xx1 = wcol(1)[1]; double yy1 = wcol(2)[1];
  double xx2 = wcol(1)[21]; double yy2 = wcol(2)[21];
  double xx3 = wcol(1)[11]; double yy3 = wcol(2)[11];
  range xx = wcol(1); range yy = wcol(2); double xxi=xx; double yyi=yy;
  _nlsfGlassTransition_Linear(xx1, yy1, xx2, yy2, xx3, yy3, xxi, yyi);
 
  There are no Errors but also no Output but i don´t know what is missing. The Goal is to have a script where i can fit all Graphs in an active Folder and then extract the Fitting data ("x3") into a new workbook.
  thanks a lot 
  punktrocker
 
  | 
                     
                    
                       Edited by - punktrocker on 08/30/2017  10:54:11 AM | 
                     
                   
                 | 
               
              
                | 
                 yuki_wu 
                 
                
                896 Posts  | 
                
                  
                 | 
               
              
                | 
                 punktrocker 
                 
                
                Germany 
                5 Posts  | 
                
                  
                    
                      
                       Posted - 08/31/2017 :  09:20:28 AM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       hi yuki_wu, ok i haven´t found this so far thank you this helped me a little bit. My Problem now is that the fit works but how can i save the data into a new sheet in a new workbook and then plot it into a layer of an inaktive already existing graph? :-)Problem is the plotting cause  i don t know where the fit data is stored.
  thanks a lot
  punktrocker | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 yuki_wu 
                 
                
                896 Posts  | 
                
                  
                    
                      
                       Posted - 08/31/2017 :  11:16:55 PM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       Hi punktrocker,
  We can use nlend X-Function ends the fitting session with a report sheet
 nlend output:=1;  So you will get the fit data in FitNLCurve1 sheet at last.
  At the beginning of this page, which I mentioned in the previous post, it introduces some X-Functions of nonlinear fitting: http://www.originlab.com/doc/LabTalk/guide/Non-linear-Fitting
  Regards, Yuki OriginLab
  | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 punktrocker 
                 
                
                Germany 
                5 Posts  | 
                
                  
                    
                      
                       Posted - 09/04/2017 :  08:40:06 AM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       Hi again, my next Problem:
  "nlbegin iy:=(1,%(varPLOT$),(%(varPLOT$)+1))func:=GlassTransition_Linear nltree:=ParamTree weight:=ins;"
  i want to do multiple fits from different columns, so i tried to use a variable but how can i do things like that "iy:=(1,%(varPLOT$),(%(varPLOT$)+1))" in Labtalk? so adding 1 to the column number to get the weights ? I tried also %(varPLOT$)+%("1) .. hasn´ worked. Is this possible at all in Labtalk?
  another Problem is here. i want to Switch between worksheets in a plotting Loop with an integer variable but i can t figure out the right Syntax for that. Here the example code:
  worksheet -b %(PlotBook$); page.active=1; int l=3;
  doc -e LW 	{	 		plotxy iy:=(1,%(varPLOT$)) plot:=201; 		plotxy iy:=[bkname$]%(l)!(1,2) plot:=200 ogl:=!1; 		 		if(varPLOT$==2) 		{ 		page.label$= %(1,@WL)_%(1,@Ws)_index; 		} 		else 		{ 		page.label$ = %(1,@WL)_%(1,@Ws)_absorbtion;	 		} 		l=l+2; 	}
  | 
                     
                    
                       Edited by - punktrocker on 09/04/2017  11:22:36 AM | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 yuki_wu 
                 
                
                896 Posts  | 
                
                  
                 | 
               
              
                | 
                 punktrocker 
                 
                
                Germany 
                5 Posts  | 
                
                  
                    
                      
                       Posted - 09/05/2017 :  04:30:25 AM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       i Loop over all wks in 1 book and i want to plot the Fits from another book in the same graph. So i wanted to Loop over 1 book and then Access the important Sheets of the fit book to plot the fit in the same layer.  I tried to use a range over the other workbook, but i can´t find an example how i can Access the "fitbook"-worksheets and the "fitbook"-Columns saved in the range of the book.
  range aa =[book1];
  aa.sheet1.col1=; ?????? is it working somehow like that? I haven´t found any example doing this somehow. I found a lot of how to define it but not how to Access the Sheets and rows of a book range. | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 yuki_wu 
                 
                
                896 Posts  | 
                
                  
                 | 
               
              
                | 
                 punktrocker 
                 
                
                Germany 
                5 Posts  | 
                
                  
                    
                      
                       Posted - 09/06/2017 :  08:32:41 AM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       Hi, Ty again for this Information. Ist somehow hard to find the right  Pages in this Origin Help.
  My next question is about the nltree Treenode. I want some of my Parameters which are automatically initialized to be fixxed. i foound that i can achieve that with nltree.fn but i can t figure out where this has to be placed that it works. | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                |   | 
                
                  Topic   | 
                
                
                 
                 
                 
                 
                 
                 | 
               
             
           | 
         
       
     |