Ignore:
Timestamp:
Dec 6, 2010 12:51:24 PM (12 years ago)
Author:
srkline
Message:

Adding new model functions to the picker list

Adding resolution-smeared functions to the 2D analysis models

Constraints are now functional during a 2D fit

vesib.cor example data is now 6-column

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Common/Packages/PlotManager/PlotUtils2D_v40.ipf

    r762 r771  
    665665        endif 
    666666 
    667         // can't use constraints in this way for multivariate fits. See the curve fitting help file 
     667        // can't use constraints defined as a single text wave for multivariate fits. See the curve fitting help file 
    668668        // and "Contraint Matrix and Vector" 
     669        // 
     670        // -- generate a constraint text wave, then the /C flag automatically generates a constraint matrix and vector 
     671        // -- then use the proper logic to dispatch (can't use /NWOK anymore) 
     672         
     673//      if(useConstr) 
     674//              Print "Constraints not yet implemented" 
     675//              useConstr = 0 
     676//      endif    
     677//      WAVE/Z constr=constr            //will be a null reference 
     678         
     679        // do not construct constraints for any of the coefficients that are being held 
     680        // -- this will generate an "unknown error" from the curve fitting 
     681        Make/O/T/N=0 constr 
    669682        if(useConstr) 
    670                 Print "Constraints not yet implemented" 
    671                 useConstr = 0 
    672         endif    
    673         WAVE/Z constr=constr            //will be a null reference 
    674          
    675 //      // do not construct constraints for any of the coefficients that are being held 
    676 //      // -- this will generate an "unknown error" from the curve fitting 
    677 //      Make/O/T/N=0 constr 
    678 //      if(useConstr) 
    679 //              String constraintExpression 
    680 //              Variable i, nPnts=DimSize(lolim, 0),nextRow=0 
    681 //              for (i=0; i < nPnts; i += 1) 
    682 //                      if (strlen(lolim[i]) > 0 && hold[i] == 0) 
    683 //                              InsertPoints nextRow, 1, constr 
    684 //                              sprintf constraintExpression, "K%d > %s", i, lolim[i] 
    685 //                              constr[nextRow] = constraintExpression 
    686 //                              nextRow += 1 
    687 //                      endif 
    688 //                      if (strlen(hilim[i]) > 0 && hold[i] == 0) 
    689 //                              InsertPoints nextRow, 1, constr 
    690 //                              sprintf constraintExpression, "K%d < %s", i, hilim[i] 
    691 //                              constr[nextRow] = constraintExpression 
    692 //                              nextRow += 1 
    693 //                      endif 
    694 //              endfor 
    695 //      endif 
     683                String constraintExpression 
     684                Variable i, nPnts=DimSize(lolim, 0),nextRow=0 
     685                for (i=0; i < nPnts; i += 1) 
     686                        if (strlen(lolim[i]) > 0 && hold[i] == 0) 
     687                                InsertPoints nextRow, 1, constr 
     688                                sprintf constraintExpression, "K%d > %s", i, lolim[i] 
     689                                constr[nextRow] = constraintExpression 
     690                                nextRow += 1 
     691                        endif 
     692                        if (strlen(hilim[i]) > 0 && hold[i] == 0) 
     693                                InsertPoints nextRow, 1, constr 
     694                                sprintf constraintExpression, "K%d < %s", i, hilim[i] 
     695                                constr[nextRow] = constraintExpression 
     696                                nextRow += 1 
     697                        endif 
     698                endfor 
     699 
     700        endif 
    696701 
    697702        if(useCursors) 
     
    735740        do 
    736741         
    737                         // now useCursors, useEps, and useConstr are all handled w/ /NWOK, just like FitWrapper 
    738  
     742                        // now useEps, and useConstr are all handled w/ /NWOK, just like FitWrapper 
     743                        // useCursors needs to have the /C flag in the command for the constraint matrix and vector to be auto-generated 
    739744 
    740745//              if(useResol && useResiduals && useTextBox)              //do it all 
     
    754759//              endif 
    755760                 
     761                if(useResol && useConstr)               //res  and constraints 
     762                        Print "useRes only" 
     763                        FuncFit/C/H=getHStr(hold) /NTHR=0 $funcStr cw, inten[pt1,pt2] /X={Qx,Qy} /M=mask /W=sw /I=1 /E=eps /C=constr /STRC=s /NWOK 
     764                        break 
     765                endif 
     766                 
    756767                if(useResol)            //res only 
    757768                        Print "useRes only" 
     
    759770                        break 
    760771                endif 
    761                          
    762772                                 
    763773/////   same as above, but all without useResol (no /STRC flag) 
    764                 if(useResiduals && useTextBox)          //resid+ text 
    765                         FuncFit/H=getHStr(hold) /NTHR=0 /TBOX=(tb) $funcStr cw, inten[pt1,pt2] /X={Qx,Qy} /M=mask /W=sw /I=1 /E=eps /C=constr /R /NWOK 
     774//              if(useResiduals && useTextBox)          //resid+ text 
     775//                      FuncFit/H=getHStr(hold) /NTHR=0 /TBOX=(tb) $funcStr cw, inten[pt1,pt2] /X={Qx,Qy} /M=mask /W=sw /I=1 /E=eps /C=constr /R /NWOK 
     776//                      break 
     777//              endif 
     778//               
     779//              if(useResiduals)                //resid 
     780//                      FuncFit/H=getHStr(hold) /NTHR=0 $funcStr cw, inten[pt1,pt2] /X={Qx,Qy} /M=mask /W=sw /I=1 /E=eps /C=constr /R /NWOK 
     781//                      break 
     782//              endif 
     783// 
     784//               
     785//              if(useTextBox)          //text 
     786//                      FuncFit/H=getHStr(hold) /NTHR=0 /TBOX=(tb) $funcStr cw, inten[pt1,pt2] /X={Qx,Qy} /M=mask /W=sw /I=1 /E=eps /C=constr /NWOK 
     787//                      break 
     788//              endif 
     789                 
     790                if(useConstr) 
     791                        FuncFit/C/H=getHStr(hold) /NTHR=0 $funcStr cw, inten[pt1,pt2] /X={Qx,Qy} /M=mask /W=sw /I=1 /E=eps /C=constr /NWOK 
    766792                        break 
    767                 endif 
    768                  
    769                 if(useResiduals)                //resid 
    770                         FuncFit/H=getHStr(hold) /NTHR=0 $funcStr cw, inten[pt1,pt2] /X={Qx,Qy} /M=mask /W=sw /I=1 /E=eps /C=constr /R /NWOK 
    771                         break 
    772                 endif 
    773  
    774                  
    775                 if(useTextBox)          //text 
    776                         FuncFit/H=getHStr(hold) /NTHR=0 /TBOX=(tb) $funcStr cw, inten[pt1,pt2] /X={Qx,Qy} /M=mask /W=sw /I=1 /E=eps /C=constr /NWOK 
    777                         break 
    778                 endif 
     793                Endif 
    779794                 
    780795                //just a plain vanilla fit 
     
    784799        while(0) 
    785800         
    786         Print "elapsed 2D fit time  = ",(StopMSTimer(-2) - t1)/1e6," s = ",(StopMSTimer(-2) - t1)/1e6/60," min" 
     801        Print "elapsed 2D fit time  = ",(StopMSTimer(-2) - t1)/1e6," seconds = ",(StopMSTimer(-2) - t1)/1e6/60," minutes" 
    787802 
    788803        // append the fit 
Note: See TracChangeset for help on using the changeset viewer.