<divclass="center"><iframescrolling="no"frameborder="0"src="../../da/dfd/kohonen__som__trace_8c__incl.svg"width="331"height="124"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<trclass="memdesc:gaffe776513b24d84b39af8ab0930fef7f"><tdclass="mdescLeft"> </td><tdclass="mdescRight">shorthand for maximum value <br/></td></tr>
<trclass="memdesc:gac6afabdc09a49a433ee19d8a9486056d"><tdclass="mdescLeft"> </td><tdclass="mdescRight">shorthand for minimum value <br/></td></tr>
<trclass="memitem:gaf5ce14f026d6d231bef29161bac2b485"><tdclass="memItemLeft"align="right"valign="top">double </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="../../d0/dcb/group__kohonen__1d.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a> (double a, double b)</td></tr>
<trclass="memdesc:gaf5ce14f026d6d231bef29161bac2b485"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Helper function to generate a random number in a given interval. <ahref="../../d0/dcb/group__kohonen__1d.html#gaf5ce14f026d6d231bef29161bac2b485">More...</a><br/></td></tr>
<trclass="memitem:ga7b84b14e60f47812b581d1f93057c85a"><tdclass="memItemLeft"align="right"valign="top">int </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="../../d0/dcb/group__kohonen__1d.html#ga7b84b14e60f47812b581d1f93057c85a">save_nd_data</a> (const char *fname, double **X, int num_points, int num_features)</td></tr>
<trclass="memdesc:ga7b84b14e60f47812b581d1f93057c85a"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Save a given n-dimensional data martix to file. <ahref="../../d0/dcb/group__kohonen__1d.html#ga7b84b14e60f47812b581d1f93057c85a">More...</a><br/></td></tr>
<trclass="memitem:ga4a57a413a3cef286a7da6d4666575586"><tdclass="memItemLeft"align="right"valign="top">void </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="../../d0/dcb/group__kohonen__1d.html#ga4a57a413a3cef286a7da6d4666575586">kohonen_get_min_1d</a> (double const *X, int N, double *val, int *idx)</td></tr>
<trclass="memdesc:ga4a57a413a3cef286a7da6d4666575586"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Get minimum value and index of the value in a vector. <ahref="../../d0/dcb/group__kohonen__1d.html#ga4a57a413a3cef286a7da6d4666575586">More...</a><br/></td></tr>
<trclass="memitem:gae334493a0917a24736fe5ba82aa6f81f"><tdclass="memItemLeft"align="right"valign="top">void </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="../../d0/dcb/group__kohonen__1d.html#gae334493a0917a24736fe5ba82aa6f81f">kohonen_update_weights</a> (double const *x, double *const *W, double *D, int num_out, int num_features, double alpha, int R)</td></tr>
<trclass="memdesc:gae334493a0917a24736fe5ba82aa6f81f"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Update weights of the SOM using Kohonen algorithm. <ahref="../../d0/dcb/group__kohonen__1d.html#gae334493a0917a24736fe5ba82aa6f81f">More...</a><br/></td></tr>
<trclass="memitem:gaeaeffbff2be4d5d15b0d4f10f846abde"><tdclass="memItemLeft"align="right"valign="top">void </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="../../d0/dcb/group__kohonen__1d.html#gaeaeffbff2be4d5d15b0d4f10f846abde">kohonen_som_tracer</a> (double **X, double *const *W, int num_samples, int num_features, int num_out, double alpha_min)</td></tr>
<trclass="memdesc:gaeaeffbff2be4d5d15b0d4f10f846abde"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Apply incremental algorithm with updating neighborhood and learning rates on all samples in the given datset. <ahref="../../d0/dcb/group__kohonen__1d.html#gaeaeffbff2be4d5d15b0d4f10f846abde">More...</a><br/></td></tr>
<trclass="memdesc:a107f00650b8041f77767927073ddddb8"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Creates a random set of points distributed <em>near</em> the circumference of a circle and trains an SOM that finds that circular pattern. <ahref="../../d0/d46/kohonen__som__trace_8c.html#a107f00650b8041f77767927073ddddb8">More...</a><br/></td></tr>
<trclass="memdesc:a1440a7779ac56f47a3f355ce4a8c7da0"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Test that creates a random set of points distributed <em>near</em> the circumference of a circle and trains an SOM that finds that circular pattern. <ahref="../../d0/d46/kohonen__som__trace_8c.html#a1440a7779ac56f47a3f355ce4a8c7da0">More...</a><br/></td></tr>
<trclass="memdesc:aa2246f940155472084ee461f3685d614"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Creates a random set of points distributed <em>near</em> the locus of the <ahref="https://en.wikipedia.org/wiki/Lemniscate_of_Gerono"target="_blank">Lamniscate of Gerono</a>. <ahref="../../d0/d46/kohonen__som__trace_8c.html#aa2246f940155472084ee461f3685d614">More...</a><br/></td></tr>
<trclass="memdesc:a0283886819c7c140a023582b7269e2d0"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Test that creates a random set of points distributed <em>near</em> the locus of the <ahref="https://en.wikipedia.org/wiki/Lemniscate_of_Gerono"target="_blank">Lamniscate of Gerono</a> and trains an SOM that finds that circular pattern. <ahref="../../d0/d46/kohonen__som__trace_8c.html#a0283886819c7c140a023582b7269e2d0">More...</a><br/></td></tr>
<trclass="memdesc:a41ae16442e3e5b891a58d2e5932a2cd0"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Creates a random set of points distributed in four clusters in 3D space with centroids at the points. <ahref="../../d0/d46/kohonen__som__trace_8c.html#a41ae16442e3e5b891a58d2e5932a2cd0">More...</a><br/></td></tr>
<trclass="memdesc:a6d0455dd5c30adda100e95f0423c786e"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Test that creates a random set of points distributed in six clusters in 3D space. <ahref="../../d0/d46/kohonen__som__trace_8c.html#a6d0455dd5c30adda100e95f0423c786e">More...</a><br/></td></tr>
<trclass="memdesc:a2256c10b16edba377b64a44b6c656908"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Convert clock cycle difference to time in seconds. <ahref="../../d0/d46/kohonen__som__trace_8c.html#a2256c10b16edba377b64a44b6c656908">More...</a><br/></td></tr>
<p>This example implements a powerful self organizing map algorithm. The algorithm creates a connected network of weights that closely follows the given data points. This creates a chain of nodes that resembles the given input shape. </p><dlclass="section author"><dt>Author</dt><dd><ahref="https://github.com/kvedala"target="_blank">Krishna Vedala</a></dd></dl>
<divclass="line"><spanclass="lineno"> 540</span><spanclass="stringliteral">"(Note: Calculated times include: creating test sets, training "</span></div>
<divclass="line"><spanclass="lineno"> 541</span><spanclass="stringliteral">"model and writing files to disk.)\n\n"</span>);</div>
<divclass="ttc"id="akohonen__som__trace_8c_html_a0283886819c7c140a023582b7269e2d0"><divclass="ttname"><ahref="../../d0/d46/kohonen__som__trace_8c.html#a0283886819c7c140a023582b7269e2d0">test2</a></div><divclass="ttdeci">void test2()</div><divclass="ttdoc">Test that creates a random set of points distributed near the locus of the Lamniscate of Gerono and t...</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:358</div></div>
<divclass="ttc"id="akohonen__som__trace_8c_html_a1440a7779ac56f47a3f355ce4a8c7da0"><divclass="ttname"><ahref="../../d0/d46/kohonen__som__trace_8c.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a></div><divclass="ttdeci">void test1()</div><divclass="ttdoc">Test that creates a random set of points distributed near the circumference of a circle and trains an...</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:261</div></div>
<divclass="ttc"id="akohonen__som__trace_8c_html_a2256c10b16edba377b64a44b6c656908"><divclass="ttname"><ahref="../../d0/d46/kohonen__som__trace_8c.html#a2256c10b16edba377b64a44b6c656908">get_clock_diff</a></div><divclass="ttdeci">double get_clock_diff(clock_t start_t, clock_t end_t)</div><divclass="ttdoc">Convert clock cycle difference to time in seconds.</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:511</div></div>
<divclass="ttc"id="akohonen__som__trace_8c_html_a6d0455dd5c30adda100e95f0423c786e"><divclass="ttname"><ahref="../../d0/d46/kohonen__som__trace_8c.html#a6d0455dd5c30adda100e95f0423c786e">test3</a></div><divclass="ttdeci">void test3()</div><divclass="ttdoc">Test that creates a random set of points distributed in six clusters in 3D space.</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:462</div></div>
<divclass="center"><divclass="zoom"><iframescrolling="no"frameborder="0"src="../../d0/d46/kohonen__som__trace_8c_a3c04138a5bfe5d72780bb7e82a18e627_cgraph.svg"width="100%"height="578"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<p>Test that creates a random set of points distributed <em>near</em> the circumference of a circle and trains an SOM that finds that circular pattern. </p>
<p>The following <ahref="https://en.wikipedia.org/wiki/Comma-separated_values"target="_blank">CSV</a> files are created to validate the execution:</p><ul>
<p>The outputs can be readily plotted in <ahref="https:://gnuplot.info"target="_blank">gnuplot</a> using the following snippet </p><divclass="fragment"><divclass="line">set datafile separator ','</div>
</div><!-- fragment --><p><imgsrc="https://raw.githubusercontent.com/TheAlgorithms/C/docs/images/machine_learning/kohonen/test1.svg"alt="Sampleexecution
<divclass="line"><spanclass="lineno"> 275</span><spanclass="keywordflow">if</span> (i < N) <spanclass="comment">// only add new arrays if i < N</span></div>
<divclass="line"><spanclass="lineno"> 277</span><spanclass="keywordflow">if</span> (i < num_out) <spanclass="comment">// only add new arrays if i < num_out</span></div>
<divclass="line"><spanclass="lineno"> 288</span><aclass="code hl_function"href="../../d0/d46/kohonen__som__trace_8c.html#a107f00650b8041f77767927073ddddb8">test_circle</a>(X, N); <spanclass="comment">// create test data around circumference of a circle</span></div>
<divclass="line"><spanclass="lineno"> 289</span><aclass="code hl_function"href="../../d0/dcb/group__kohonen__1d.html#ga7b84b14e60f47812b581d1f93057c85a">save_nd_data</a>(<spanclass="stringliteral">"test1.csv"</span>, X, N, features); <spanclass="comment">// save test data points</span></div>
<divclass="ttc"id="agroup__kohonen__1d_html_ga7b84b14e60f47812b581d1f93057c85a"><divclass="ttname"><ahref="../../d0/dcb/group__kohonen__1d.html#ga7b84b14e60f47812b581d1f93057c85a">save_nd_data</a></div><divclass="ttdeci">int save_nd_data(const char *fname, double **X, int num_points, int num_features)</div><divclass="ttdoc">Save a given n-dimensional data martix to file.</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:70</div></div>
<divclass="ttc"id="agroup__kohonen__1d_html_gaeaeffbff2be4d5d15b0d4f10f846abde"><divclass="ttname"><ahref="../../d0/dcb/group__kohonen__1d.html#gaeaeffbff2be4d5d15b0d4f10f846abde">kohonen_som_tracer</a></div><divclass="ttdeci">void kohonen_som_tracer(double **X, double *const *W, int num_samples, int num_features, int num_out, double alpha_min)</div><divclass="ttdoc">Apply incremental algorithm with updating neighborhood and learning rates on all samples in the given...</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:179</div></div>
<divclass="ttc"id="agroup__kohonen__1d_html_gaf5ce14f026d6d231bef29161bac2b485"><divclass="ttname"><ahref="../../d0/dcb/group__kohonen__1d.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a></div><divclass="ttdeci">double _random(double a, double b)</div><divclass="ttdoc">Helper function to generate a random number in a given interval.</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:54</div></div>
<divclass="ttc"id="agroup__kohonen__1d_html_gaffe776513b24d84b39af8ab0930fef7f"><divclass="ttname"><ahref="../../d0/dcb/group__kohonen__1d.html#gaffe776513b24d84b39af8ab0930fef7f">max</a></div><divclass="ttdeci">#define max(a, b)</div><divclass="ttdoc">shorthand for maximum value</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:32</div></div>
<divclass="ttc"id="akohonen__som__trace_8c_html_a107f00650b8041f77767927073ddddb8"><divclass="ttname"><ahref="../../d0/d46/kohonen__som__trace_8c.html#a107f00650b8041f77767927073ddddb8">test_circle</a></div><divclass="ttdeci">void test_circle(double *const *data, int N)</div><divclass="ttdoc">Creates a random set of points distributed near the circumference of a circle and trains an SOM that ...</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:223</div></div>
<divclass="ttc"id="amalloc__dbg_8h_html_a725f50ecaf1959d96de79b36b4788fee"><divclass="ttname"><ahref="../../d2/ddd/malloc__dbg_8h.html#a725f50ecaf1959d96de79b36b4788fee">malloc</a></div><divclass="ttdeci">#define malloc(bytes)</div><divclass="ttdoc">This macro replace the standard malloc function with malloc_dbg.</div><divclass="ttdef"><b>Definition:</b> malloc_dbg.h:18</div></div>
<divclass="ttc"id="amalloc__dbg_8h_html_a9cc854374299a1dd933bf62029761768"><divclass="ttname"><ahref="../../d2/ddd/malloc__dbg_8h.html#a9cc854374299a1dd933bf62029761768">free</a></div><divclass="ttdeci">#define free(ptr)</div><divclass="ttdoc">This macro replace the standard free function with free_dbg.</div><divclass="ttdef"><b>Definition:</b> malloc_dbg.h:26</div></div>
<divclass="center"><iframescrolling="no"frameborder="0"src="../../d0/d46/kohonen__som__trace_8c_a1440a7779ac56f47a3f355ce4a8c7da0_cgraph.svg"width="663"height="187"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<p>Test that creates a random set of points distributed <em>near</em> the locus of the <ahref="https://en.wikipedia.org/wiki/Lemniscate_of_Gerono"target="_blank">Lamniscate of Gerono</a> and trains an SOM that finds that circular pattern. </p>
<p>The following <ahref="https://en.wikipedia.org/wiki/Comma-separated_values"target="_blank">CSV</a> files are created to validate the execution:</p><ul>
<p>The outputs can be readily plotted in <ahref="https:://gnuplot.info"target="_blank">gnuplot</a> using the following snippet </p><divclass="fragment"><divclass="line">set datafile separator ','</div>
</div><!-- fragment --><p><imgsrc="https://raw.githubusercontent.com/TheAlgorithms/C/docs/images/machine_learning/kohonen/test2.svg"alt="Sampleexecution
<divclass="line"><spanclass="lineno"> 367</span><spanclass="keywordflow">if</span> (i < N) <spanclass="comment">// only add new arrays if i < N</span></div>
<divclass="line"><spanclass="lineno"> 369</span><spanclass="keywordflow">if</span> (i < num_out) <spanclass="comment">// only add new arrays if i < num_out</span></div>
<divclass="line"><spanclass="lineno"> 381</span><aclass="code hl_function"href="../../d0/d46/kohonen__som__trace_8c.html#aa2246f940155472084ee461f3685d614">test_lamniscate</a>(X, N); <spanclass="comment">// create test data around the lamniscate</span></div>
<divclass="line"><spanclass="lineno"> 382</span><aclass="code hl_function"href="../../d0/dcb/group__kohonen__1d.html#ga7b84b14e60f47812b581d1f93057c85a">save_nd_data</a>(<spanclass="stringliteral">"test2.csv"</span>, X, N, features); <spanclass="comment">// save test data points</span></div>
<divclass="ttc"id="akohonen__som__trace_8c_html_aa2246f940155472084ee461f3685d614"><divclass="ttname"><ahref="../../d0/d46/kohonen__som__trace_8c.html#aa2246f940155472084ee461f3685d614">test_lamniscate</a></div><divclass="ttdeci">void test_lamniscate(double *const *data, int N)</div><divclass="ttdoc">Creates a random set of points distributed near the locus of the Lamniscate of Gerono.</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:319</div></div>
<divclass="center"><iframescrolling="no"frameborder="0"src="../../d0/d46/kohonen__som__trace_8c_a0283886819c7c140a023582b7269e2d0_cgraph.svg"width="663"height="187"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<p>The following <ahref="https://en.wikipedia.org/wiki/Comma-separated_values"target="_blank">CSV</a> files are created to validate the execution:</p><ul>
<p>The outputs can be readily plotted in <ahref="https:://gnuplot.info"target="_blank">gnuplot</a> using the following snippet </p><divclass="fragment"><divclass="line">set datafile separator ','</div>
</div><!-- fragment --><p><imgsrc="https://raw.githubusercontent.com/TheAlgorithms/C/docs/images/machine_learning/kohonen/test3.svg"alt="Sampleexecution
<divclass="line"><spanclass="lineno"> 471</span><spanclass="keywordflow">if</span> (i < N) <spanclass="comment">// only add new arrays if i < N</span></div>
<divclass="line"><spanclass="lineno"> 473</span><spanclass="keywordflow">if</span> (i < num_out) <spanclass="comment">// only add new arrays if i < num_out</span></div>
<divclass="line"><spanclass="lineno"> 485</span><aclass="code hl_function"href="../../d0/d46/kohonen__som__trace_8c.html#a41ae16442e3e5b891a58d2e5932a2cd0">test_3d_classes</a>(X, N); <spanclass="comment">// create test data around the lamniscate</span></div>
<divclass="line"><spanclass="lineno"> 486</span><aclass="code hl_function"href="../../d0/dcb/group__kohonen__1d.html#ga7b84b14e60f47812b581d1f93057c85a">save_nd_data</a>(<spanclass="stringliteral">"test3.csv"</span>, X, N, features); <spanclass="comment">// save test data points</span></div>
<divclass="ttc"id="akohonen__som__trace_8c_html_a41ae16442e3e5b891a58d2e5932a2cd0"><divclass="ttname"><ahref="../../d0/d46/kohonen__som__trace_8c.html#a41ae16442e3e5b891a58d2e5932a2cd0">test_3d_classes</a></div><divclass="ttdeci">void test_3d_classes(double *const *data, int N)</div><divclass="ttdoc">Creates a random set of points distributed in four clusters in 3D space with centroids at the points.</div><divclass="ttdef"><b>Definition:</b> kohonen_som_trace.c:410</div></div>
<divclass="center"><iframescrolling="no"frameborder="0"src="../../d0/d46/kohonen__som__trace_8c_a6d0455dd5c30adda100e95f0423c786e_cgraph.svg"width="663"height="187"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<divclass="line"><spanclass="lineno"> 412</span><spanclass="keyword">const</span><spanclass="keywordtype">double</span> R = 0.1; <spanclass="comment">// radius of cluster</span></div>
<divclass="center"><iframescrolling="no"frameborder="0"src="../../d0/d46/kohonen__som__trace_8c_a41ae16442e3e5b891a58d2e5932a2cd0_cgraph.svg"width="248"height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<divclass="line"><spanclass="lineno"> 225</span><spanclass="keyword">const</span><spanclass="keywordtype">double</span> R = 0.75, dr = 0.3;</div>
<divclass="line"><spanclass="lineno"> 226</span><spanclass="keywordtype">double</span> a_t = 0., b_t = 2.f * M_PI; <spanclass="comment">// theta random between 0 and 2*pi</span></div>
<divclass="line"><spanclass="lineno"> 227</span><spanclass="keywordtype">double</span> a_r = R - dr, b_r = R + dr; <spanclass="comment">// radius random between R-dr and R+dr</span></div>
<divclass="line"><spanclass="lineno"> 235</span><spanclass="keywordtype">double</span> r = <aclass="code hl_function"href="../../d0/dcb/group__kohonen__1d.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(a_r, b_r); <spanclass="comment">// random radius</span></div>
<divclass="line"><spanclass="lineno"> 236</span><spanclass="keywordtype">double</span> theta = <aclass="code hl_function"href="../../d0/dcb/group__kohonen__1d.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(a_t, b_t); <spanclass="comment">// random theta</span></div>
<divclass="line"><spanclass="lineno"> 237</span><aclass="code hl_struct"href="../../df/dea/structdata.html">data</a>[i][0] = r * cos(theta); <spanclass="comment">// convert from polar to cartesian</span></div>
<divclass="line"><spanclass="lineno"> 238</span><aclass="code hl_struct"href="../../df/dea/structdata.html">data</a>[i][1] = r * sin(theta);</div>
<divclass="center"><iframescrolling="no"frameborder="0"src="../../d0/d46/kohonen__som__trace_8c_a107f00650b8041f77767927073ddddb8_cgraph.svg"width="214"height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<p>Creates a random set of points distributed <em>near</em> the locus of the <ahref="https://en.wikipedia.org/wiki/Lemniscate_of_Gerono"target="_blank">Lamniscate of Gerono</a>. </p>
<divclass="line"><spanclass="lineno"> 329</span><spanclass="keywordtype">double</span> dx = <aclass="code hl_function"href="../../d0/dcb/group__kohonen__1d.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(-dr, dr); <spanclass="comment">// random change in x</span></div>
<divclass="line"><spanclass="lineno"> 330</span><spanclass="keywordtype">double</span> dy = <aclass="code hl_function"href="../../d0/dcb/group__kohonen__1d.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(-dr, dr); <spanclass="comment">// random change in y</span></div>
<divclass="line"><spanclass="lineno"> 331</span><spanclass="keywordtype">double</span> theta = <aclass="code hl_function"href="../../d0/dcb/group__kohonen__1d.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(0, M_PI); <spanclass="comment">// random theta</span></div>
<divclass="line"><spanclass="lineno"> 332</span><aclass="code hl_struct"href="../../df/dea/structdata.html">data</a>[i][0] = dx + cos(theta); <spanclass="comment">// convert from polar to cartesian</span></div>
<divclass="center"><iframescrolling="no"frameborder="0"src="../../d0/d46/kohonen__som__trace_8c_aa2246f940155472084ee461f3685d614_cgraph.svg"width="246"height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="../../doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.9.5 </li>