You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CMSIS-DSP/v1.12.0/group__LinearInterpolate.html

383 lines
21 KiB
HTML

<!-- HTML header for doxygen 1.9.2-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CMSIS-DSP: Linear Interpolation</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>
<script type="text/javascript" src="footer.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<link href="$extra_stylesheet" rel="stylesheet" type="text/css" />
<link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
<link href="version.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../version.js"></script>
</head>
<body>
<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: 55px;">
<td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="cmsis_logo_white_small.png"/></td>
<td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
<div id="projectname">CMSIS-DSP
&#160;<span id="projectnumber"><script type="text/javascript">
<!--
writeHeader.call(this);
writeVersionDropdown(this);
//-->
</script>
</span>
</div>
<div id="projectbrief">CMSIS DSP Software Library</div>
</td>
<!--END !PROJECT_NAME-->
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
<li class="current"><a href="modules.html"><span>&#160;API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__LinearInterpolate.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Linear Interpolation<div class="ingroups"><a class="el" href="group__groupInterpolation.html">Interpolation Functions</a></div></div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaa20337e0f054738623b29d5eb7cc7470"><td class="memItemLeft" align="right" valign="top">float16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LinearInterpolate.html#gaa20337e0f054738623b29d5eb7cc7470">arm_linear_interp_f16</a> (<a class="el" href="structarm__linear__interp__instance__f16.html">arm_linear_interp_instance_f16</a> *S, float16_t x)</td></tr>
<tr class="memdesc:gaa20337e0f054738623b29d5eb7cc7470"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process function for the floating-point Linear Interpolation Function. <a href="group__LinearInterpolate.html#gaa20337e0f054738623b29d5eb7cc7470">More...</a><br /></td></tr>
<tr class="separator:gaa20337e0f054738623b29d5eb7cc7470"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d0a7f29f5048aa5c5d68fa26d39eda4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="arm__math__types_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LinearInterpolate.html#ga7d0a7f29f5048aa5c5d68fa26d39eda4">arm_linear_interp_f32</a> (<a class="el" href="structarm__linear__interp__instance__f32.html">arm_linear_interp_instance_f32</a> *S, <a class="el" href="arm__math__types_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> x)</td></tr>
<tr class="memdesc:ga7d0a7f29f5048aa5c5d68fa26d39eda4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process function for the floating-point Linear Interpolation Function. <a href="group__LinearInterpolate.html#ga7d0a7f29f5048aa5c5d68fa26d39eda4">More...</a><br /></td></tr>
<tr class="separator:ga7d0a7f29f5048aa5c5d68fa26d39eda4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad1dcffdc94c2a0ade62cc0db60e8ada9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="arm__math__types_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LinearInterpolate.html#gad1dcffdc94c2a0ade62cc0db60e8ada9">arm_linear_interp_q15</a> (const <a class="el" href="arm__math__types_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a> *pYData, <a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> x, uint32_t nValues)</td></tr>
<tr class="memdesc:gad1dcffdc94c2a0ade62cc0db60e8ada9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process function for the Q15 Linear Interpolation Function. <a href="group__LinearInterpolate.html#gad1dcffdc94c2a0ade62cc0db60e8ada9">More...</a><br /></td></tr>
<tr class="separator:gad1dcffdc94c2a0ade62cc0db60e8ada9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab31b961852580b14bda151a7f480c6cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LinearInterpolate.html#gab31b961852580b14bda151a7f480c6cb">arm_linear_interp_q31</a> (const <a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> *pYData, <a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> x, uint32_t nValues)</td></tr>
<tr class="memdesc:gab31b961852580b14bda151a7f480c6cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process function for the Q31 Linear Interpolation Function. <a href="group__LinearInterpolate.html#gab31b961852580b14bda151a7f480c6cb">More...</a><br /></td></tr>
<tr class="separator:gab31b961852580b14bda151a7f480c6cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga490ac8c4b82d1ea761e9756e6546de69"><td class="memItemLeft" align="right" valign="top"><a class="el" href="arm__math__types_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LinearInterpolate.html#ga490ac8c4b82d1ea761e9756e6546de69">arm_linear_interp_q7</a> (const <a class="el" href="arm__math__types_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a> *pYData, <a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> x, uint32_t nValues)</td></tr>
<tr class="memdesc:ga490ac8c4b82d1ea761e9756e6546de69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process function for the Q7 Linear Interpolation Function. <a href="group__LinearInterpolate.html#ga490ac8c4b82d1ea761e9756e6546de69">More...</a><br /></td></tr>
<tr class="separator:ga490ac8c4b82d1ea761e9756e6546de69"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p >Linear interpolation is a method of curve fitting using linear polynomials. Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line</p>
<dl class="section user"><dt></dt><dd><div class="image">
<img src="LinearInterp.gif" alt=""/>
<div class="caption">
Linear interpolation</div></div>
</dd></dl>
<dl class="section user"><dt></dt><dd>A Linear Interpolate function calculates an output value(y), for the input(x) using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)</dd></dl>
<dl class="section user"><dt>Algorithm:</dt><dd><pre>
y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
where x0, x1 are nearest values of input x
y0, y1 are nearest values to output y
</pre></dd></dl>
<dl class="section user"><dt></dt><dd>This set of functions implements Linear interpolation process for Q7, Q15, Q31, and floating-point data types. The functions operate on a single sample of data and each call to the function returns a single processed value. <code>S</code> points to an instance of the Linear Interpolate function data structure. <code>x</code> is the input sample value. The functions returns the output value.</dd></dl>
<dl class="section user"><dt></dt><dd>if x is outside of the table boundary, Linear interpolation returns first value of the table if x is below input range and returns last value of table if x is above range. </dd></dl>
<h2 class="groupheader">Function Documentation</h2>
<a id="gaa20337e0f054738623b29d5eb7cc7470" name="gaa20337e0f054738623b29d5eb7cc7470"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa20337e0f054738623b29d5eb7cc7470">&#9670;&nbsp;</a></span>arm_linear_interp_f16()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float16_t arm_linear_interp_f16 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structarm__linear__interp__instance__f16.html">arm_linear_interp_instance_f16</a> *&#160;</td>
<td class="paramname"><em>S</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float16_t&#160;</td>
<td class="paramname"><em>x</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">S</td><td>is an instance of the floating-point Linear Interpolation structure </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>input sample to process </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>y processed output sample. </dd></dl>
</div>
</div>
<a id="ga7d0a7f29f5048aa5c5d68fa26d39eda4" name="ga7d0a7f29f5048aa5c5d68fa26d39eda4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7d0a7f29f5048aa5c5d68fa26d39eda4">&#9670;&nbsp;</a></span>arm_linear_interp_f32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="arm__math__types_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> arm_linear_interp_f32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structarm__linear__interp__instance__f32.html">arm_linear_interp_instance_f32</a> *&#160;</td>
<td class="paramname"><em>S</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math__types_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a>&#160;</td>
<td class="paramname"><em>x</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">S</td><td>is an instance of the floating-point Linear Interpolation structure </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>input sample to process </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>y processed output sample. </dd></dl>
</div>
</div>
<a id="gad1dcffdc94c2a0ade62cc0db60e8ada9" name="gad1dcffdc94c2a0ade62cc0db60e8ada9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad1dcffdc94c2a0ade62cc0db60e8ada9">&#9670;&nbsp;</a></span>arm_linear_interp_q15()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="arm__math__types_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a> arm_linear_interp_q15 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="arm__math__types_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a> *&#160;</td>
<td class="paramname"><em>pYData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a>&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>nValues</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pYData</td><td>pointer to Q15 Linear Interpolation table </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>input sample to process </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nValues</td><td>number of table values </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>y processed output sample.</dd></dl>
<dl class="section user"><dt></dt><dd>Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12. </dd></dl>
</div>
</div>
<a id="gab31b961852580b14bda151a7f480c6cb" name="gab31b961852580b14bda151a7f480c6cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab31b961852580b14bda151a7f480c6cb">&#9670;&nbsp;</a></span>arm_linear_interp_q31()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> arm_linear_interp_q31 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> *&#160;</td>
<td class="paramname"><em>pYData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a>&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>nValues</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pYData</td><td>pointer to Q31 Linear Interpolation table </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>input sample to process </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nValues</td><td>number of table values </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>y processed output sample.</dd></dl>
<dl class="section user"><dt></dt><dd>Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12. </dd></dl>
</div>
</div>
<a id="ga490ac8c4b82d1ea761e9756e6546de69" name="ga490ac8c4b82d1ea761e9756e6546de69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga490ac8c4b82d1ea761e9756e6546de69">&#9670;&nbsp;</a></span>arm_linear_interp_q7()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="arm__math__types_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a> arm_linear_interp_q7 </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="arm__math__types_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a> *&#160;</td>
<td class="paramname"><em>pYData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="arm__math__types_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a>&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>nValues</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pYData</td><td>pointer to Q7 Linear Interpolation table </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>input sample to process </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nValues</td><td>number of table values </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>y processed output sample.</dd></dl>
<dl class="section user"><dt></dt><dd>Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12. </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">
<script type="text/javascript">
<!--
writeFooter.call(this);
//-->
</script>
</li>
</ul>
</div>
</body>
</html>