File: neural_function.c1 /* 2 * File: neural_function.c 3 * 4 * MATLAB Coder version : 3.0 5 * C/C++ source code generated on : 01-Oct-2018 18:42:48 6 */ 7 8 /* Include Files */ 9 #include "rt_nonfinite.h" 10 #include "neural_function.h" 11 #include "bsxfun.h" 12 13 /* Function Declarations */ 14 static void mapminmax_apply(const double x[87], const double settings_gain[87], 15 const double settings_xoffset[87], double y[87]); 16 17 /* Function Definitions */ 18 19 /* 20 * Arguments : const double x[87] 21 * const double settings_gain[87] 22 * const double settings_xoffset[87] 23 * double y[87] 24 * Return Type : void 25 */ 26 static void mapminmax_apply(const double x[87], const double settings_gain[87], 27 const double settings_xoffset[87], double y[87]) 28 { 29 double bv[87]; 30 double av[87]; 31 int k; 32 33 /* ===== MODULE FUNCTIONS ======== */ 34 /* Map Minimum and Maximum Input Processing Function */ 35 bsxfun(x, settings_xoffset, bv); 36 memcpy(&av[0], &bv[0], 87U * sizeof(double)); 37 for (k = 0; k < 87; k++) { 38 y[k] = av[k] * settings_gain[k]; 39 } 40 41 for (k = 0; k < 87; k++) { 42 av[k] = y[k] + -1.0; 43 } 44 45 memcpy(&y[0], &av[0], 87U * sizeof(double)); 46 } 47 48 /* 49 * NEURAL_FUNCTION neural network simulation function. 50 * 51 * Generated by Neural Network Toolbox function genFunction, 01-Oct-2018 18:35:00. 52 * 53 * [Y] = neural_function(X,~,~) takes these arguments: 54 * 55 * X = 1xTS cell, 1 inputs over TS timesteps 56 * Each X{1,ts} = 87xQ matrix, input #1 at timestep ts. 57 * 58 * and returns: 59 * Y = 1xTS cell of 1 outputs over TS timesteps. 60 * Each Y{1,ts} = 3xQ matrix, output #1 at timestep ts. 61 * 62 * where Q is number of samples (or series) and TS is the number of timesteps. 63 * Arguments : const double X[87] 64 * double Y[3] 65 * Return Type : void 66 */ 67 void neural_function(const double X[87], double Y[3]) 68 { 69 double dv0[87]; 70 static const double dv1[87] = { -3.93358162325573, -4.7005389351864, 71 -4.17691575624323, -4.19603037687426, -4.24094862044763, -3.71117466932456, 72 -3.64052551016929, -2.39437691096801, -2.36705370150794, -1.89475660103364, 73 -1.87871918918137, -1.57157228707323, -1.20011871674397, -0.810944426141116, 74 -0.662032627032511, -0.956311706629162, -0.845930356522473, 75 -1.16936608915729, -1.39629731012193, -1.29905202198026, -1.4564877422106, 76 -1.58750706589727, -1.77751999303987, -2.0703741508203, -2.33579156864261, 77 -2.65329782922328, -3.3579239298296, -4.00650910828663, -4.48412955433827, 78 -5.28339353087632, -5.38082724356509, -4.72473154987194, -4.81390867801994, 79 -4.52533913850157, -4.55546284225742, -5.10576809517968, -5.36744840800978, 80 -5.52775208337947, -5.34535960705908, -5.0786798631313, -4.8954857330568, 81 -4.52356075123602, -4.42613841511285, -4.08166190793305, -4.06947400328473, 82 -3.46464996229915, -3.16034782045202, -3.03682095581605, -3.07569726494871, 83 -2.97889488400619, -2.68135113203762, -2.8071620758414, -2.99507176859322, 84 -3.0380400813079, -3.25921390889523, -3.19987420335154, -3.35460289806095, 85 -3.52090292974416, -3.6255135555423, -3.52960963346527, -4.21793923319817, 86 -4.18648941345696, -4.86191302230411, -4.61464622664525, -4.68644532142178, 87 -4.3060123087063, -4.15341461504635, -4.08539194750866, -4.05089377445154, 88 -4.49850304412451, -4.47268770726707, -4.71240054302569, -4.82967664541423, 89 -4.80950364566299, -5.08775060624053, -5.21696357135953, -5.29553820241571, 90 -5.28236459560578, -5.3497388527466, -5.63136811993728, -5.43144206613029, 91 -5.5621130892755, -4.87680603056546, -4.839662467674, -4.48803536222872, 92 -3.5155890484586, -3.06204372041065 }; 93 94 static const double dv2[87] = { 0.350123729291923, 0.310306694862397, 95 0.330289865790475, 0.320555805444016, 0.314437909244984, 0.341119031224766, 96 0.299535627019141, 0.376932944740204, 0.37426408030959, 0.403992777509957, 97 0.385007042584086, 0.405886442776289, 0.427292823872727, 0.488045810050552, 98 0.534522201354226, 0.494162928493379, 0.516220888171863, 0.500543073092887, 99 0.460843462187998, 0.475706742343186, 0.483563987547145, 0.457722198808448, 100 0.48513572417292, 0.449810257720805, 0.461329081470528, 0.486305711044667, 101 0.433716789827896, 0.403614656968077, 0.409643535243235, 0.374904107328359, 102 0.363859701758097, 0.42280276440439, 0.419987952915447, 0.44725581821976, 103 0.439092725337682, 0.391713334647472, 0.366003190391681, 0.353952776973158, 104 0.371062938557826, 0.385996133731071, 0.388195112243647, 0.402823772500652, 105 0.405979831784203, 0.39785630729736, 0.395760845114842, 0.444424959611998, 106 0.534890136970141, 0.569684015150813, 0.533982571663888, 0.541840707011217, 107 0.595931552560612, 0.688714678287541, 0.629623426262478, 0.628865510723891, 108 0.598306839944129, 0.6031436328936, 0.582787173814482, 0.546024801270456, 109 0.543143488354881, 0.543785690766324, 0.461495883470795, 0.413159465875324, 110 0.330707525146053, 0.35924773659937, 0.360546164696299, 0.353557875910774, 111 0.369451419835682, 0.416397720785669, 0.4712415678985, 0.423343722174895, 112 0.428645411367945, 0.395720291722239, 0.396637814545147, 0.400298162900016, 113 0.379645473209065, 0.373238460700493, 0.36828707498269, 0.374103654515404, 114 0.363387758853434, 0.349223454326535, 0.367426775569484, 0.359270001146643, 115 0.402184893391046, 0.39947130080122, 0.408017529044216, 0.355987200560011, 116 0.333739285962095 }; 117 118 double b[7]; 119 double b_b[7]; 120 double x[7]; 121 int ixstart; 122 static const double a[7] = { 1.3303388563824017, 0.48430607093416322, 123 -0.13996164446191606, -0.48286858201237504, 1.4403474171763477, 124 0.7568606439201272, 1.2778579032993866 }; 125 126 double mtmp; 127 int ix; 128 static const double b_a[609] = { -0.096980280681273928, -0.53925901922831787, 129 -0.2336607017957241, -0.08492148076503811, 0.73247697097362652, 130 0.41121972764967918, 0.25736146574183838, -0.05126948744558453, 131 -0.15697181119224168, 0.27627396018656675, 0.10855240923328056, 132 0.50295054527493388, 0.15398997817318763, -0.016418390702866006, 133 0.059166614479941704, 0.14602929902659267, 0.12084911568586068, 134 -0.046931230083819636, -0.20660902435243714, 0.1306790930971469, 135 0.11525290864099327, 0.57493676383350734, 0.049200565380991282, 136 -0.22256558884053379, -0.51144297768280078, -0.086229231452175231, 137 0.061775683918295667, 0.36728611671918127, -0.40372704568557954, 138 -0.26174389316855884, 0.35770782214914321, 0.04976538719458784, 139 0.12830118814603714, -0.18510520311213324, 0.0735402844883886, 140 -0.33142815952548249, -0.04083897936233237, -0.030420509120051724, 141 0.29719886133105489, 0.36071535484791512, 0.14881990064039086, 142 0.18089046352587257, 0.028750612139460459, 0.13945152253353507, 143 0.40871128033260434, 0.241131368609686, -0.19060565105065683, 144 0.33557457848856914, -0.25931270135049644, 0.93332495272790827, 145 0.33721278291390372, -0.6849062735204805, -0.2385316292356251, 146 0.10567327327797074, -0.010588546534660202, -0.015527968337368928, 147 0.12495785938014936, -0.03075865867111563, -0.18914414166399776, 148 0.46366301280291555, -0.44714641242336128, 0.07583982521480151, 149 -0.33068671968890867, -0.0030962486959824256, -0.2137780659729831, 150 -0.39511007272621357, -0.22378311103977913, -0.26981855843668973, 151 0.2562172466810041, -0.1339521878691107, 0.30544471284695823, 152 0.25229048449337665, -0.11683381026373024, -0.068101066008155173, 153 -0.2585287760863188, 0.1596800793930033, 0.22093085509116406, 154 0.13963049312268061, 0.15362879635662297, -0.10394131160200992, 155 -0.38263816470980289, -0.17604866275531264, -0.04905872991920756, 156 0.23604346979055821, 0.2301836469921566, 0.068131782834044557, 157 0.056770613216140742, -0.32876486533489291, 0.45705343662074471, 158 -0.20128726552190465, 0.20091882134377959, -0.18608439342474231, 159 -0.014496366032474006, -0.031438332223428886, -0.52300750687780551, 160 0.51502292007459249, 0.098961815888513979, 0.30633584506524614, 161 -0.28225104878913482, 0.21001427837065148, -0.31572516444615467, 162 -0.37143730081179804, 0.12268700572856285, 0.063733308350814435, 163 0.38816778798247015, -0.43451580010226387, -0.22916026168231224, 164 0.38583246086959611, -0.37434445234968944, 0.85389537613069277, 165 -0.39833315092383537, 0.1957678484553016, -0.17339172058235591, 166 -0.1921534707033728, 0.17883736424564134, -0.24836176972170168, 167 0.43941471911169094, -0.18989072248375913, 0.0373691939527188, 168 -0.17794680622691506, -0.19711793583117382, 0.3805687729419695, 169 -0.35662057285202819, 0.22023764581231339, -0.36788093348043993, 170 0.36833984805147413, -0.15101514604532928, -0.011264075583990715, 171 0.17556216385515741, -0.38080306893903665, 0.14038126528781161, 172 0.013658323678677541, 0.20697648304280392, 0.050307562774164233, 173 0.12382567186271962, -0.12257687282899428, -0.19106084302074042, 174 -0.0088973135731430231, -0.27821589670861158, -0.0377691973548426, 175 -0.41397401706289694, -0.11993728057955313, 0.24486094819443271, 176 0.22296663892683527, -0.080124021245137331, 0.029902990639075207, 177 0.11937382272461147, -0.14010170156342405, 0.36263056094330315, 178 0.4206510122774772, 0.10422663059178314, 0.35907099002817144, 179 -0.1181793472297067, 0.14123606216826476, -0.45310084404226442, 180 -0.10866064184256766, 0.062419369636676381, 0.43621062565974678, 181 -0.24331697714374698, -0.19686982540593947, -0.16936485307181975, 182 -0.43016864493412588, -0.16599862609527183, 0.027024118294658964, 183 0.22989354833633951, -0.36109726187386226, -0.0061403852068276608, 184 -0.4732640312417124, 0.072323920054999852, 0.38765911742443693, 185 -0.22651859790972323, 0.23448948324798952, -0.345146198382994, 186 -0.32384027684404781, -0.13504322754913084, -0.29375974791915649, 187 -0.15069769912025194, 0.54440734732983831, 0.30177036252683831, 188 -0.391786815566677, 0.25545964568230778, -0.22504816550474077, 189 0.2099474024906717, -0.11587410917130472, 0.06278458871511132, 190 -0.085602673452154915, 0.098769809326487337, 0.11560466497798094, 191 -0.22359900922723402, 0.8491828912940933, -0.18988889790869531, 192 -0.65474887294856821, -0.19816101665630087, 0.12118076073183884, 193 -0.10378912494779813, 0.067248356369669846, 0.22421141499700559, 194 0.10297432279838356, -0.34781572289161866, 0.20669975076169589, 195 0.015385624014233559, 0.1652721239137134, -0.032624609613659504, 196 0.09998748100060717, -0.33071264929681488, -0.13832928457522531, 197 -0.0231146554520325, 0.35051830580765359, 0.0058019874721854693, 198 -0.088980960671997136, 0.45372283925334772, -0.21395363120729821, 199 0.26374046491885955, 0.36868949846270149, 0.11597015488006537, 200 -0.046323354839511222, -0.24979972874813128, -0.26104290113674744, 201 -0.67209503579979668, 0.82297261039374292, 0.12750096205392752, 202 0.38471097954459021, -0.02298137869059701, -0.028088939604939134, 203 0.056903064744558696, -0.51899697255572508, 0.27270479329367209, 204 -0.18810592972132414, 0.1950199372502128, -0.22159486839204418, 205 0.14757111983236904, 0.43470253007940346, -0.040936610667725193, 206 -0.2069906099251192, -0.026381251273397979, 0.001359295445295082, 207 -0.20582302789606222, -0.35601319425269584, 0.26589436837100555, 208 -0.063668310012914536, -0.19343352848313472, 0.059991570050013737, 209 0.030737410845168407, -0.2565123307951957, -0.2399919678004705, 210 -0.540560680596019, -0.3724334735079175, 0.64370035563739381, 211 0.53326870780846958, -0.033862728782170767, 0.024308012445123837, 212 0.060964021023144049, -0.95332830076688047, -0.21241586378720306, 213 0.8634550687528223, 0.37100359066385008, 0.22890099323196103, 214 -0.23285724736067309, 0.25027362028852029, -1.3240933140067166, 215 -0.03415695561438814, 0.84002836852127694, 0.659884278925901, 216 -0.52370422711651976, 0.088651095913326913, 0.139211455759452, 217 -0.66049781203618207, 0.31493379876803018, 0.11710549103088638, 218 -0.31486307017592369, -0.40855542746040807, 0.19927901845358159, 219 0.29385537444333032, -0.49235127971744458, -0.081529590924325365, 220 0.42440613234277491, 0.41243177246657409, -0.51187571960224587, 221 -0.24943055402143294, -0.1179077890637705, 0.083935257658885126, 222 0.22587345703934691, -0.13269384451373967, -0.19120241376770553, 223 -0.089087796314263487, -0.024888122550690367, 0.14652345114098561, 224 0.15582791446988037, 0.67822048861321638, -0.37374848530486504, 225 0.079939218987974681, -0.071379955870411557, 0.12482125417734138, 226 -0.06094696288415416, -0.066393683992108835, 0.311754293366945, 227 0.030319982607798151, -0.18884472316539386, -0.41325705071617597, 228 0.21485902704911994, -0.10837756042161514, 0.51623218697681272, 229 0.42873283536130463, -0.43436428463526555, -0.40332704343399867, 230 -0.057956769098904508, 0.39310528000324918, 0.088651783160239389, 231 0.38970459314068945, 0.24947409036659485, -0.2643523840242, 232 -0.44763049603968658, 0.11435743565754072, 0.16759915925966742, 233 0.14863242098221902, 0.99699403395554254, 0.93163363593262538, 234 -0.77493497043168147, -0.2396998706439156, 0.28068148739424165, 235 0.044357938295021306, 0.42147799094323768, 0.67479201506520892, 236 0.30047649915232616, -0.64009142520902151, -0.22362154422390962, 237 -0.062087749549458365, 0.14199325151825182, 0.10345454092730669, 238 -0.33785374600314044, 0.36526630174277924, -0.20337741137545223, 239 0.32471120803744496, -0.38727203564037505, 0.257164869385884, 240 0.0089518950158614975, -0.22194391699987379, 0.24309703766296606, 241 -0.28273519527234464, -0.27246343724921751, 0.42208307797294808, 242 0.2092224871645717, 0.33447030029674973, 0.99680472396599284, 243 0.70573983806417451, -0.42750877872865539, -0.620347634563173, 244 0.69601503659608777, 0.016817161723158461, 0.25754125347086348, 245 -0.043051618697342323, -0.14368200175581375, -0.32867527987598744, 246 -0.20951868839773702, -0.23659198308897811, 0.41789991706901203, 247 0.0509681126131345, 0.45662072932202558, 0.61901602930590072, 248 -0.37904122163819137, -0.20427774850022096, 0.235074160329133, 249 -0.0026080307830618071, 0.20927004189711271, 0.11224238143127165, 250 -0.062047481893304418, -0.32663919684669351, -0.13547672360289337, 251 0.24343535617467044, -0.1039620270346973, 0.51605264041165211, 252 0.37203733748562129, 0.12232352959482579, -0.2911810851564372, 253 0.035266078864770053, 0.050841960084369725, 0.30777118782357693, 254 0.19353960725605229, -0.1277298254579643, 0.25003693345290423, 255 0.18156394571807249, 0.28110233310842525, -0.35696929246306891, 256 0.10093974961800528, 0.019744296100355024, -0.15248893268510263, 257 0.12654252978178149, -0.297891601650051, 0.21652933326120566, 258 -0.15396867904083314, 0.25048036581243821, -0.088430387092279863, 259 0.21086384363207711, -0.041052568007557376, -0.0035296225641382045, 260 -0.094863367516833913, -0.37138105654946618, 0.21729543078216035, 261 -0.095075976664470041, -0.19027332510237749, 0.23500415436738789, 262 0.047160454415025962, 0.18545467324188153, -0.18113655525128411, 263 0.17840302145320408, -0.21726095487989316, 0.25829624791629258, 264 0.25848089312297484, -0.20521509651985889, -0.25694611362739639, 265 -0.23848272939090132, 0.3379497637848134, 0.12195442730604597, 266 -0.0065515803239256376, 0.40606437464618789, 0.27300861137817933, 267 0.20270846757705674, -0.72659567225492716, 0.12362569565579891, 268 -0.084946484905938258, -0.18811664322305763, 0.18499730936598546, 269 -0.0743326431017227, 0.051585593116900065, -0.16673175374534172, 270 0.26946435932701945, -0.21864473879214802, 0.18478825050399367, 271 0.15631396203481723, -0.067235984342301408, 0.10353395705410076, 272 -0.20190555991107123, 0.31575521302468562, 0.077652453300935259, 273 0.0082902836978532915, 0.20844982249337846, 0.21165591994488922, 274 0.40998322980749258, -0.30175666783376848, 0.28750722572970744, 275 0.14524664732667292, 0.61521903123439936, -0.00026603380031256507, 276 0.11644856880863728, 0.068335223819787017, 0.38891341229798282, 277 0.044609633710683272, 0.031211740269690109, -0.20366708333858996, 278 -0.31785762529456779, 0.029519936631241424, 0.37445016416129434, 279 -0.3539247497662138, 0.2405177487867266, -0.52344715195375913, 280 0.11192111621560633, 0.056235501382976588, 0.091976701396118049, 281 0.042562106518622571, 0.20590235355722908, 0.0058374732332592376, 282 0.0686260735924795, 0.635437330465892, -0.24362926609456351, 283 -0.039809596995156779, 0.28462461071303946, -0.054188713842255765, 284 -0.11080299494950008, -0.26882059433948591, 0.22750992720245872, 285 0.0663358750480181, 0.0091444837809973728, 0.31521711425085958, 286 0.15273894709312713, 0.12491720011222457, 0.16710679527722008, 287 -0.25443664736536, -0.0068350967125102233, 0.4853669557822532, 288 0.2529419825607247, -0.18452667061275108, 0.354794842534171, 289 -0.1103737216770071, -0.44262069602359672, 0.17091492542458819, 290 0.52011016482496353, 0.37374996559420587, -0.37719696709535888, 291 0.2095085639460231, -0.2928809203080569, -0.28633613519921308, 292 0.042309560612733346, 0.52245167117697955, 0.55629769193677736, 293 -0.49599016017944836, -0.057272822070158928, -0.23633014087459758, 294 0.092092794773306258, 0.2586471965468517, 0.064528582701037632, 295 0.32835044201555164, 0.21447160503201237, 0.061431486327923432, 296 0.16897610164429308, -0.082710049062752422, 0.019332171679381, 297 -0.34297791583242071, -0.021958989093254229, -0.32618399400875092, 298 -0.057678221189215534, -0.18561831020943936, 0.3456111676796404, 299 0.24202524501385492, -0.26590283806361409, 0.022526389841741074, 300 -0.25437131322023826, 0.20220630971658998, -0.056059719247841464, 301 0.075255593143145047, 0.19519357371224025, -0.16268919502812845, 302 -0.10571329955546893, 0.087090692536121811, -0.19816724824478033, 303 0.039796780301173174, -0.237259869704325, 0.23920016350651582, 304 0.15762912321525169, -0.098761436065629246, -0.43415737523324588, 305 0.014764759880255886, -0.022904974038449336, -0.46231502653222939, 306 0.14505285507300994, 0.015754488749759092, 0.22996399525538114, 307 0.28177026104516234, -0.051448468209040414, 0.24459328116181128, 308 -0.17011237679831551, -0.1363427992661726, -0.019243947010018442, 309 0.21674030946875766, 0.094984155098177481, -0.15364310750417939, 310 -0.22893223142702931, 0.169183860425828, 0.016518259336585989, 311 0.079163353342053017, 0.1465959229148929, 0.13576873775234816, 312 0.10873091720319816, -0.25987566377879312, 0.39796359158464067, 313 0.071775905177259139, -0.42924029585073786, 0.26917033898471415, 314 -0.012906606340457715, 0.31661942055833836, 0.091316071772359772, 315 -0.18594616851301077, -0.38904082950119512, -0.029606654934983205, 316 -0.010076263596847705, -0.12939138552978863, 0.1638478351607775, 317 -0.22359258669807017, 0.070625622996685025, 0.1664558365307286, 318 -0.30177965908539639, -0.053349099695005939, 0.22742350480439394, 319 0.29837532607268269, -0.09297638402912578, 0.34796608550998087, 320 0.14960627399183951, -0.32193749354040552, -0.066884663580669024, 321 0.024209197265779511, 0.020091028329137471, -0.17380774835495816, 322 0.1065617147197816, -0.073899365495549152, 0.35694031884245114, 323 -0.060733646189359905, 0.29566619652745629, -0.27973167630284362, 324 -0.11692420921430537, 0.016393728144700422, -0.11494950417371554, 325 -0.096983265407107222, 0.27730964218360771, -0.14220175887469197, 326 -0.084407111060703949, -0.31825334590099547, -0.27513802237260232, 327 0.27903759555472191, 0.63114514409479128, 0.47717553050670297, 328 -0.29681246567546893, 0.19322859452974506, 0.19277470109246372, 329 -0.87993739189858489, -0.48030056055137182, 0.81346968190082147, 330 0.36138522882112056, 0.14168875166108405, -0.029009879240860632, 331 -0.25244139944865052 }; 332 333 double av[3]; 334 static const double c_a[3] = { 1.8462877881569821, -0.057027038557283541, 335 -1.3496395642347347 }; 336 337 double numer[3]; 338 static const double d_a[21] = { -1.6789813159209799, -2.0187084469138945, 339 2.6073454615845915, 0.9724194856787185, -0.69912060811285071, 340 1.3769938730758091, -1.4699771479786734, 1.681017497280942, 341 -1.6865797663384852, 2.0125735931938911, 1.7885914298698502, 342 -2.7144429677406947, -3.0355282630350708, 2.0620943255650568, 343 1.2658729645764237, 0.0062420003061243014, -0.50200441674015572, 344 -0.7344433812051353, -1.3644793930057564, 0.4718136850056871, 345 -1.4361737233645488 }; 346 347 boolean_T exitg1; 348 double denom; 349 350 /* ===== NEURAL NETWORK CONSTANTS ===== */ 351 /* Input 1 */ 352 /* Layer 1 */ 353 /* Layer 2 */ 354 /* ===== SIMULATION ======== */ 355 /* Dimensions */ 356 /* timesteps */ 357 /* samples/series */ 358 /* Input 1 */ 359 /* Layer 1 */ 360 /* Sigmoid Symmetric Transfer Function */ 361 mapminmax_apply(X, dv2, dv1, dv0); 362 for (ixstart = 0; ixstart < 7; ixstart++) { 363 b_b[ixstart] = a[ixstart]; 364 mtmp = 0.0; 365 for (ix = 0; ix < 87; ix++) { 366 mtmp += b_a[ixstart + 7 * ix] * dv0[ix]; 367 } 368 369 b[ixstart] = b_b[ixstart] + mtmp; 370 x[ixstart] = -2.0 * b[ixstart]; 371 x[ixstart] = exp(x[ixstart]); 372 } 373 374 /* Layer 2 */ 375 for (ixstart = 0; ixstart < 3; ixstart++) { 376 av[ixstart] = c_a[ixstart]; 377 } 378 379 for (ix = 0; ix < 7; ix++) { 380 b[ix] = 2.0 / (1.0 + x[ix]) - 1.0; 381 } 382 383 for (ix = 0; ix < 3; ix++) { 384 mtmp = 0.0; 385 for (ixstart = 0; ixstart < 7; ixstart++) { 386 mtmp += d_a[ix + 3 * ixstart] * b[ixstart]; 387 } 388 389 numer[ix] = av[ix] + mtmp; 390 } 391 392 /* Competitive Soft Transfer Function */ 393 ixstart = 1; 394 mtmp = numer[0]; 395 if (rtIsNaN(numer[0])) { 396 ix = 2; 397 exitg1 = false; 398 while ((!exitg1) && (ix < 4)) { 399 ixstart = ix; 400 if (!rtIsNaN(numer[ix - 1])) { 401 mtmp = numer[ix - 1]; 402 exitg1 = true; 403 } else { 404 ix++; 405 } 406 } 407 } 408 409 if (ixstart < 3) { 410 while (ixstart + 1 < 4) { 411 if (numer[ixstart] > mtmp) { 412 mtmp = numer[ixstart]; 413 } 414 415 ixstart++; 416 } 417 } 418 419 for (ixstart = 0; ixstart < 3; ixstart++) { 420 numer[ixstart] = exp(numer[ixstart] - mtmp); 421 } 422 423 denom = numer[0]; 424 for (ixstart = 0; ixstart < 2; ixstart++) { 425 denom += numer[ixstart + 1]; 426 } 427 428 mtmp = denom; 429 for (ixstart = 0; ixstart < 1; ixstart++) { 430 if (denom == 0.0) { 431 mtmp = 1.0; 432 } 433 } 434 435 for (ixstart = 0; ixstart < 3; ixstart++) { 436 Y[ixstart] = numer[ixstart] / mtmp; 437 } 438 439 /* Output 1 */ 440 } 441 442 /* 443 * File trailer for neural_function.c 444 * 445 * [EOF] 446 */ 447 |