@WSAR1-V1@M@COMMENT@statist calculation@DPS@ 2)b[:Us_~dQcDPy& tY:-KBd_M=Y *ks[M=Y *krSͽpٍ!|YD:-K\`Q}mPy& yR}@umPuCuY޽@NOTE@Statist Get "correlation coefficient" and " y = B0 + B1 x " of statist *** Target : Target : W-8xx7/8xx6 (Wincon ISaGRAF version) Note: 1. There will be two language description. One is English, one is Chinese. 2. Only tradition Chinese available now. Below description is in Tradition Chinese Character: ----------------------------------------------------------------------------------------- έp: X "t" (correlation coefficient) & uʦ^ku ( y = B0 + B1 x ) t JѼ: Xa_ : X Ʀs float array s , 1 - 18 Ya_ : Y Ʀs float array s , 1 - 18 N_ : Ƶ, 1 - 255 Ǧ^: B0_ : uʦ^kut ( y = B0 + B1 x ) B1_ : uʦ^kut ( y = B0 + B1 x ) r_ : t (correlation coefficient) X_ : N_ X ƪ Y_ : N_ Y ƪ Sx_ : N_ X ƪ зǮt Sy_ : N_ Y ƪ зǮt Sxy_ : N_ X, Y ƪ "˥@ܲ" (covariance) tk: 1. DX X_ , Y_ X_ = (X1 + X2 + ... + XN) / N_ ; Y_ = (Y1 + Y2 + ... + YN) / N_ ; 2. DX Sx_ , Sy_ Sx_ = Square root of ( (X1-X_)*(X1-X_) + (X2-X_)*(X2-X_) + ... + (XN-X_)*(XN-X_) ) ; Sy_ = Square root of ( (Y1-Y_)*(Y1-Y_) + (Y2-Y_)*(Y2-Y_) + ... + (YN-Y_)*(YN-Y_) ) ; 3. DX Sxy_ Sxy_ = (X1-X_) * (Y1-Y_) + (X2-X_) * (Y2-Y_) + ... + (XN-X_) * (YN-Y_) ; 4. DX r_ r_ = Sxy_ / ( Sx_ * Sy_ ) ; // r_ ~= -1 to 1 5. DX B0_ & B1_ , ĥγ̤pk (least squares method) B1_ = Sxy_ / (Sx_ * Sx_) ; B0_ = Y_ - B1_ * X_ ; ----------------------------------------------------------------------------------------- ICP DAS , Taiwan Sep.05,2006 @PARAM@U#AB0_ #R>B1_ #R>r_ #R>X_ #R>Y_ #R>Sx_ #R>Sy_ #R>Sxy_ @SRC@/* function block name: statist */ #include #include typedef struct { } str_data; uint16 FBINIT_statist (uint16 hinstance) { return (sizeof (str_data)); } void FBACT_statist (uint16 hinstance, str_data *data, str_arg *arg) { } #define BOO_VALUE ((T_BOO *)value) #define ANA_VALUE ((T_ANA *)value) #define REAL_VALUE ((T_REAL *)value) #define TMR_VALUE ((T_TMR *)value) #define MSG_VALUE ((T_MSG *)value) void FBREAD_statist (uint16 hinstance, str_data *data, uint16 parno, void *value) { } ABP fbldef_statist (char *name, IBP *initproc, RBP *readproc) { sys_strcpy (name, "STATIST"); *initproc = (IBP)FBINIT_statist; *readproc = (RBP)FBREAD_statist; return ((ABP)FBACT_statist); } @DEFS@/* function block interface name: statist */ typedef long T_BOO; typedef long T_ANA; typedef float T_REAL; typedef long T_TMR; typedef char *T_MSG; typedef struct { /* CALL */ T_ANA _xa_; /* CALL */ T_ANA _ya_; /* CALL */ T_ANA _n_; } str_arg; #define XA_ (arg->_xa_) #define YA_ (arg->_ya_) #define N_ (arg->_n_) #define FBLPNO_B0_ 0 #define FBLPNO_B1_ 1 #define FBLPNO_R_ 2 #define FBLPNO_X_ 3 #define FBLPNO_Y_ 4 #define FBLPNO_SX_ 5 #define FBLPNO_SY_ 6 #define FBLPNO_SXY_ 7 @END@