libdspl-2.0/dspl/doc/html/filter__iir__test_8c_source...

108 wiersze
15 KiB
HTML

<!-- HTML header for doxygen 1.8.13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libdspl-2.0: Исходный файл F:/dsplib.org/libdspl-2.0/examples/src/filter_iir_test.c</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="doxy_stylesheet.css" rel="stylesheet" type="text/css" />
<link href="http://dsplib.org/dsplib-stylesheet.css".css" rel="stylesheet" type="text/css">
</head>
<body>
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter32971694 = new Ya.Metrika({
id:32971694,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
} catch(e) { }
});
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = "https://mc.yandex.ru/metrika/watch.js";
if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/32971694" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<div class = "header-bar">
<div class = "menu-bar">
<nav>
<ul>
<div class = "dsplib-logo"><img src="http://dsplib.org/logo.png" /> </div>
<li><a href="http://ru.dsplib.org">Содержание</a></li>
<li><a href="http://ru.dsplib.org/dspl">DSPL</a></li>
<li><a href="http://ru.dsplib.org/forum">Форум</a></li>
<li>
<div class="search-bar">
<div class="ya-site-form ya-site-form_inited_no" onclick="return {'action':'http://ru.dsplib.org/search_results.html','arrow':false,'bg':'transparent','fontsize':12,'fg':'#000000','language':'ru','logo':'rb','publicname':'ru.dsplib.org поиск','suggest':true,'target':'_self','tld':'ru','type':2,'usebigdictionary':true,'searchid':2332185,'input_fg':'#000000','input_bg':'#ffffff','input_fontStyle':'normal','input_fontWeight':'normal','input_placeholder':'поиск','input_placeholderColor':'#000000','input_borderColor':'#7f9db9'}"><form action="https://yandex.ru/search/site/" method="get" target="_self" accept-charset="utf-8"><input type="hidden" name="searchid" value="2332185"/><input type="hidden" name="l10n" value="ru"/><input type="hidden" name="reqenc" value=""/><input type="search" name="text" value="" style = "height: 24px; font-family: verdana,arial; font-size: 12px"/><input type="submit" value="Найти" style = "display: none;"/></form></div><style type="text/css">.ya-page_js_yes .ya-site-form_inited_no { display: none; }</style><script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0],e=d.documentElement;if((' '+e.className+' ').indexOf(' ya-page_js_yes ')===-1){e.className+=' ya-page_js_yes';}s.type='text/javascript';s.async=true;s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Form.init()})})(window,document,'yandex_site_callbacks');</script>
</div>
</li>
</ul>
</nav>
</div>
</div>
<div class="main-dsplib">
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libdspl-2.0
</div>
<div id="projectbrief">Библиотека алгоритмов цифровой обработки сигналов</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Создано системой Doxygen 1.8.15 -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d28a4824dc47e487b107a5db32ef43c4.html">examples</a></li><li class="navelem"><a class="el" href="dir_95b57effb8038f90624a8a5b60361b2e.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">filter_iir_test.c</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;dspl.h&quot;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#define ORD 6</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#define N 2000</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[])</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keywordtype">void</span>* handle; <span class="comment">/* DSPL handle */</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordtype">double</span> b[ORD+1], a[ORD+1];</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordtype">double</span> t[N], s[N], n[N], sf[N];</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="structrandom__t.html">random_t</a> rnd;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordtype">int</span> k;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">int</span> err;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="comment">/* Load DSPL function */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; handle = dspl_load();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">/* random generator init */</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; random_init(&amp;rnd, RAND_TYPE_MT19937, NULL);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">/* fill time vector */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___c_o_m_m_o_n___g_r_o_u_p.html#ga1ba7e0e9f5194114592abaa49a146def">linspace</a>(0, N, N, DSPL_PERIODIC, t);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="comment">/* generate noise */</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; randn(n, N, 0, 1.0, &amp;rnd);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">/* input signal s = sin(2*pi*t) + n(t) */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span>(k = 0; k &lt; N; k++)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; s[k] = sin(M_2PI*0.02*t[k]) + n[k];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">/* IIR filter coefficients calculation */</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; iir(1.0, 70.0, ORD, 0.06, 0.0, DSPL_FILTER_ELLIP | DSPL_FILTER_LPF, b, a);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">/* input signal filtration */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="group___f_i_l_t_e_r___c_o_n_v___g_r_o_u_p.html#ga0705c95a8edec62c9f57d007d2a53836">filter_iir</a>(b, a, ORD, s, N, sf);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">/* save input signal and filter output to the txt-files */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="group___i_n___o_u_t___g_r_o_u_p.html#gae30c87757d5bf57584904e543fb1efd2">writetxt</a>(t,s, N, <span class="stringliteral">&quot;dat/s.txt&quot;</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="group___i_n___o_u_t___g_r_o_u_p.html#gae30c87757d5bf57584904e543fb1efd2">writetxt</a>(t,sf,N, <span class="stringliteral">&quot;dat/sf.txt&quot;</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">/* run GNUPLOT script */</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; err = <a class="code" href="group___i_n___o_u_t___g_r_o_u_p.html#ga8dbaffeb9039ba3eee17c9371d5d7a4c">gnuplot_script</a>(argc, argv, <span class="stringliteral">&quot;gnuplot/filter_iir.plt&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">/* free DSPL handle */</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; dspl_free(handle);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div><div class="ttc" id="group___i_n___o_u_t___g_r_o_u_p_html_gae30c87757d5bf57584904e543fb1efd2"><div class="ttname"><a href="group___i_n___o_u_t___g_r_o_u_p.html#gae30c87757d5bf57584904e543fb1efd2">writetxt</a></div><div class="ttdeci">int writetxt(double *x, double *y, int n, char *fn)</div><div class="ttdoc">Сохранить вещественные данные в текстовый файл</div><div class="ttdef"><b>Definition:</b> <a href="inout_8c_source.html#l00236">inout.c:236</a></div></div>
<div class="ttc" id="group___f_i_l_t_e_r___c_o_n_v___g_r_o_u_p_html_ga0705c95a8edec62c9f57d007d2a53836"><div class="ttname"><a href="group___f_i_l_t_e_r___c_o_n_v___g_r_o_u_p.html#ga0705c95a8edec62c9f57d007d2a53836">filter_iir</a></div><div class="ttdeci">int filter_iir(double *b, double *a, int ord, double *x, int n, double *y)</div><div class="ttdoc">Фильтрация вещественного сигнала вещественным БИХ-фильтром</div><div class="ttdef"><b>Definition:</b> <a href="conv_8c_source.html#l00577">conv.c:577</a></div></div>
<div class="ttc" id="group___i_n___o_u_t___g_r_o_u_p_html_ga8dbaffeb9039ba3eee17c9371d5d7a4c"><div class="ttname"><a href="group___i_n___o_u_t___g_r_o_u_p.html#ga8dbaffeb9039ba3eee17c9371d5d7a4c">gnuplot_script</a></div><div class="ttdeci">int gnuplot_script(int argc, char *argv[], char *fn)</div><div class="ttdoc">Функция вызова скрипта пакета GNUPLOT для построения графика.</div><div class="ttdef"><b>Definition:</b> <a href="inout_8c_source.html#l00048">inout.c:48</a></div></div>
<div class="ttc" id="structrandom__t_html"><div class="ttname"><a href="structrandom__t.html">random_t</a></div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00059">dspl.h:59</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___c_o_m_m_o_n___g_r_o_u_p_html_ga1ba7e0e9f5194114592abaa49a146def"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___c_o_m_m_o_n___g_r_o_u_p.html#ga1ba7e0e9f5194114592abaa49a146def">linspace</a></div><div class="ttdeci">int linspace(double x0, double x1, int n, int type, double *x)</div><div class="ttdoc">Функция заполняет массив линейно-нарастающими, равноотстоящими значениями от x0 до x1</div><div class="ttdef"><b>Definition:</b> <a href="fillarray_8c_source.html#l00031">fillarray.c:31</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- HTML footer for doxygen 1.8.13-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Документация по libdspl-2.0. Последние изменения: Пн 4 Ноя 2019 16:56:52. Создано системой &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</div>
</body>
</html>