From fc3a4b123dec7446a1cd416d30889325bce938dc Mon Sep 17 00:00:00 2001 From: Friese Date: Mon, 30 Apr 2018 15:49:04 +0200 Subject: [PATCH] file handling --- bin/.NLMS_ANSI_C.c.swp | Bin 24576 -> 24576 bytes bin/NLMS_ANSI_C.c | 55 +++++++++++++++-------------------------- bin/NLMS_ANSI_C.exe | Bin 374067 -> 373585 bytes 3 files changed, 20 insertions(+), 35 deletions(-) diff --git a/bin/.NLMS_ANSI_C.c.swp b/bin/.NLMS_ANSI_C.c.swp index 00989292c0517d7e95525bad7386e4348d224145..e004df7153cf2779e81f5c9456207d69dbabf815 100644 GIT binary patch delta 2177 zcma*odu$X%9Ki9pg3y*nTTu(BFdR*}Yme&{3{)$WaxJAin^K@qYFX~~qxXI^sX7+b8 zJ3IT^X*p(VIcCdT<5^a|P!_m7f+JmsZR5UO`N?mootb~8*=DMY^zpXMDnGr*RvlZP zuF^(irV5ceEFQ{bSr+XXDa403gxByap1~GGP>tod7Y^KkA4drB5%!}4`|t!>QH_PT z4|m~@;X<6nDeOZ#Ucesshl_b)8iiZ&4Y$>Sm+>N=!gg%KCTOU|Dp*sy^0K*AOPntIhBdi%r%G{sHYP7mMhq?NcPv`EV1ctxSRDkzrVOf!t`#c7 zk*T!Fk-L2j;fN`HYc+$8`#S3l^E(UGmC5rfN-Dio6_q9O9x>6c2ZCW;R+cW2Qxmn` zk>^xZ$|*NC$^1k;q-#dl&`e$CyFIbX?oqZ8ds2iL&HSyEuT~kJqUfA7A&PO9WqJ>9 zq7ADt8@X`8TFObtf*n^`s=sgv7hx^&X&k~q?8FXi#gou5ANM00*I2aYw;;Xxi;kQj$6Oz~Izf=l=br*IM{a1=+-Hf*&Jk5Xts z4OU_~=3y?}7z^u}CF3@X#0B1;^EiMuG$Di;n2K}=RHeo`@{5zB&CR_pf}xvDMpzon z;>LQ|e{+4^!&)f*^7tE?)`WCvg!@DKOIBxL|GxzHw#|^n6o<30SwyY3kiq}=9|s5= zpqb7ScbOPC5ldl3eE8nE-+a4?xa(JMuK)Ms)cJzy*zv;MNe&rl3Iu{1Yl8mT_=Ag> zhEFpc{mm}vCmEEQSs#sOo>lFO)y$x;Hz9NSI;thzH`(hp=)niqni03T(X_h~)jBO; z>PEa#+UpEG(iG|ol6HU4(0yiIqoMnCpB{-c#3P&Ig9+c*fzw}UMeWfYNqp}H$J2B( zC+ql_B;AW<%tjHW!GrM_i(wdo!5D-jT(goDpW+8?AT%Rj7o-yQxtj zj*&dwuoCPMcrghRVI|ikK4d5G4%+b&+R%y`{GQAPfv@ouzQlQajvgGu0kmNcoyH`#5+cHdJ8hF6t|8IHNo1NjoyYP)#Y_^ z)vXSDb1_AAdt20^`DwB8l3hu6CU%|c8;#Q?E?Z_IfPJU`qKp-lmkr6Y X2I|`u^9R@#*_`@z#@OGBlhXeIn|$fh delta 2155 zcmajge{2(F9LMpe1NVcjG6K2@$Q}xAEp%%awh0+9evFMx##C_1<}$kV3e85lU2kki zu!|%PP-DVlF#3mtUJ$TN%s_)EpeRN|L`VP=6r#lUwcXM|qL;kdC(nKR zJiWWmb5C!-rMKUb-QuaQu9Y(jJ%S@kh!eI;4F^in_GjN3ZK+UWvT`jORZ&*Cr6Jmx zrAFJH%@AVKsCX%-WmV*p`-ON5J*dMh%tSuM;xC&Jf8r)i;~4g%535mwYAi+-DzON5 zOvbfLAui$=wqrdyu^cs-qDEBESO_aFScT}vYfuPbA*>jIfB5TH@H;N!JA8;EI2@fk z`SlDn;B=|J>3btWa#U6?StO_VJ3MlZ^oKgMprcz0tXge^7ij*FuDR^pEz|AJvRJJ@ z(5@}@uF)KM!)g*|TUUE^IqZa#jZF+|Z%*_U8a;+RK9t)nRh#SUQ8ExTWPl=%sxMfP z!Zl?%a@6sHuzhVP;FCi$#s;4jWb)>4m){@gVNz9J_*kS}^Xfs}YiP2FC+v2I4X+Vs zmA+6{OS{(SYLeXy9@M%Adum;>wyEr%!Y0|=b5~(<)sxf@40 z>Q2cx)i%qf21>@zE>N>e?JD)r0%a?;W^Rb(Ue}B+J*ajR=Wi{Ytvn@Z(MZ{$l+wW@ z$4|>VA1Q3~5F3`23>$iD$2y1E=aR|6RZVl-THWqgpv^ot7R`t+5?u>-wHx82MG~ut zjXI+^F|6BdE(!B@;(r#1@|N$6D2otBN5o^ckuUQ&Nx%-E4==)tV%#D$H*po0a0Xw& zeEofZqd0=YID~_E6|ca2HLit$R@8!UMq=+sGnsazAr)pKcVGi_bRYx=a&d})oWy4I z!jHjMU?%O8Johj01rFjRY=N1RPRzptuv#NRWY91J@*KL+iFOp>Ho>@nb2x!rh+rKW zumVqE9>yaD=hC@SXz-y0UaUkD8c~X3JRIR;0vE`;j?eHW)}tPEaN_KJJR+RJd+0?3qmY5TbUtp3QRd&$cLGY{E^YT1GdIfl~)U{(sY+hYz!H(v=6 x = new Stack(); -//static Random rnd = new Random(); -//static double[] _x = new double[M]; -//static double[,] w = new double[M, M]; #define learnrate 1.0 +#define WGHTS 1 +#define WGHTSFTR 2 +#define RES 3 +#define DRCTPRD 4 double x[] ={0}; double _x[M] = {0}; double w [M][M]={{0},{0}}; - -void fileName(char *name_suffix); +const char *fileName(int id); double r2(void); double rnd(void); double sum_array(double x[], int length); @@ -33,13 +32,11 @@ void direkterVorgaenger(void); void lokalerMittelWert(void); - - - int main(int argc, char **argv ) { //init test_array, fill in weights by random - int i = 0; + int i; + // srand(NULL); for (i = 0; i < M; i++) { _x[i] += ((255.0 / M) * i); for (int k = 1; k < M; k++) @@ -49,10 +46,7 @@ int main(int argc, char **argv ) { } // save plain test_array before math magic happened - char weightsBefore [] = "_weights.txt"; - fileName(&weightsBefore); - FILE *fp0 = fopen(weightsBefore,"wb+"); - + FILE *fp0 = fopen(fileName(WGHTS),"wb+"); for (i = 0; i < tracking; i++){ for ( int k = 1; k < tracking; k++ ){ fprintf(fp0, "[%f][%f] %.2f\n", k, i, w[k][i]); @@ -66,10 +60,7 @@ int main(int argc, char **argv ) { // save test_array after math magic happened - char weightsAfter [] = "_weights_after.txt"; - fileName(&weightsAfter); - FILE *fp1 = fopen(weightsAfter,"wb+"); - + FILE *fp1 = fopen(fileName(WGHTSFTR),"wb+"); for (i = 0; i < tracking; i++) { for (int k = 1; k < tracking; k++) { fprintf(fp1, "[%f][%f] %.2f\n", k,i, w[k][i]); @@ -143,9 +134,7 @@ void lokalerMittelWert() { // write in file - char results [] = "_results.txt"; - fileName(&results); - FILE *fp2 = fopen(results, "wb+"); + FILE *fp2 = fopen(fileName(RES), "wb+"); fprintf(fp2, "quadr. Varianz(x_error): {%f}\nMittelwert:(x_error): {%f}\n\n", deviation, mean); fclose(fp2); @@ -171,9 +160,7 @@ void direkterVorgaenger() { int xCount = 0, i; // File handling - char direkterVorgaenger [] = "_direkterVorgaenger.txt"; - fileName(&direkterVorgaenger); - FILE *fp3 = fopen(direkterVorgaenger, "wb+"); + FILE *fp3 = fopen(fileName(DRCTPRD), "wb+"); for ( xCount = 1; xCount < M; xCount++ ){ double xPredicted = 0.0; @@ -195,7 +182,7 @@ void direkterVorgaenger() { xSquared += pow( _x[xCount - i] - _x[xCount - i - 1], 2); // substract direct predecessor } - for ( i = 1; x < xCount; i++){ + for ( i = 1; i < xCount; i++){ w[i][xCount+1] = w[i][xCount] + learnrate * xError[xCount] * ( ( _x[xCount - i - 1] ) / xSquared ); } } @@ -226,16 +213,15 @@ void direkterVorgaenger() { =================================== */ -void fileName(char *name_suffix){ - //filename - char date[34]; - //char name[13] = "_results.txt"; +const char *fileName(int id){ + + static char* suffix[] = {"_weights.txt","_weights_after.txt", "_results.txt", "direct_predecessor.txt"}; + char *date; time_t now; now = time(NULL); strftime(date, 20, "%Y-%m-%d_%H_%M_%S", localtime(&now)); - strcpy(date, *name_suffix); - //return &date[0]; - return; + strcat(suffix[id], date); + return suffix[id]; } @@ -298,7 +284,6 @@ double r2() */ double rnd() { - double u; - u = r2(); - return u; + double rndmval= r2(); + return rndmval; } diff --git a/bin/NLMS_ANSI_C.exe b/bin/NLMS_ANSI_C.exe index 6ed6094fdd48daa8a55c22dcdab714c7caced295..3e5c6ef981bec132a5144ba6bee39033ff21c3ee 100644 GIT binary patch delta 20749 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