blob: 1cd70dbdfb2d553d0a9644e3b7f9f492229770a6 [file] [log] [blame]
<!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"/>
<title>CMSIS DSP Software Library: Linear Interpolation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.2 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
<div class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="examples.html"><span>Examples</span></a></li>
<li id="searchli">
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
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.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<h1>Linear Interpolation<br/>
<small>
[<a class="el" href="group__group_interpolation.html">Interpolation Functions</a>]</small>
</h1> </div>
</div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static __INLINE <a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___linear_interpolate.html#ga2269263d810cafcd19681957b37d5cf6">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_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> x)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static __INLINE <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___linear_interpolate.html#ga690e63e9a513ca0a741b1b174805d031">arm_linear_interp_q31</a> (<a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> *pYData, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> x, uint32_t nValues)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static __INLINE <a class="el" href="arm__math_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___linear_interpolate.html#ga42c9206e5d2d22b8808716dc30622846">arm_linear_interp_q15</a> (<a class="el" href="arm__math_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a> *pYData, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> x, uint32_t nValues)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static __INLINE <a class="el" href="arm__math_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___linear_interpolate.html#gacb0d44fe00aca0ba1d036d469a1763fc">arm_linear_interp_q7</a> (<a class="el" href="arm__math_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a> *pYData, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> x, uint32_t nValues)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed 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="user"><dt><b></b></dt><dd><div align="center">
<img src="LinearInterp.gif" alt="LinearInterp.gif"/>
<p><strong>Linear interpolation</strong></p></div>
</dd></dl>
<dl class="user"><dt><b></b></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="user"><dt><b>Algorithm:</b></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="user"><dt><b></b></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="user"><dt><b></b></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>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga2269263d810cafcd19681957b37d5cf6"></a><!-- doxytag: member="arm_math.h::arm_linear_interp_f32" ref="ga2269263d810cafcd19681957b37d5cf6" args="(arm_linear_interp_instance_f32 *S, float32_t x)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static __INLINE <a class="el" href="arm__math_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_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><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Process function for the floating-point Linear Interpolation Function. </p>
<dl><dt><b>Parameters:</b></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="return"><dt><b>Returns:</b></dt><dd>y processed output sample. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="arm_linear_interp_example_f32_8c-example.html#a13">arm_linear_interp_example_f32.c</a>.</dd>
</dl>
<p>Definition at line <a class="el" href="arm__math_8h_source.html#l05377">5377</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga690e63e9a513ca0a741b1b174805d031"></a><!-- doxytag: member="arm_math.h::arm_linear_interp_q31" ref="ga690e63e9a513ca0a741b1b174805d031" args="(q31_t *pYData, q31_t x, uint32_t nValues)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static __INLINE <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> arm_linear_interp_q31 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="arm__math_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_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><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Process function for the Q31 Linear Interpolation Function. </p>
<dl><dt><b>Parameters:</b></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="return"><dt><b>Returns:</b></dt><dd>y processed output sample.</dd></dl>
<dl class="user"><dt><b></b></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>
<p>Definition at line <a class="el" href="arm__math_8h_source.html#l05436">5436</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga42c9206e5d2d22b8808716dc30622846"></a><!-- doxytag: member="arm_math.h::arm_linear_interp_q15" ref="ga42c9206e5d2d22b8808716dc30622846" args="(q15_t *pYData, q31_t x, uint32_t nValues)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static __INLINE <a class="el" href="arm__math_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a> arm_linear_interp_q15 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="arm__math_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_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><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Process function for the Q15 Linear Interpolation Function. </p>
<dl><dt><b>Parameters:</b></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="return"><dt><b>Returns:</b></dt><dd>y processed output sample.</dd></dl>
<dl class="user"><dt><b></b></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>
<p>Definition at line <a class="el" href="arm__math_8h_source.html#l05496">5496</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p>
</div>
</div>
<a class="anchor" id="gacb0d44fe00aca0ba1d036d469a1763fc"></a><!-- doxytag: member="arm_math.h::arm_linear_interp_q7" ref="gacb0d44fe00aca0ba1d036d469a1763fc" args="(q7_t *pYData, q31_t x, uint32_t nValues)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static __INLINE <a class="el" href="arm__math_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a> arm_linear_interp_q7 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="arm__math_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_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><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Process function for the Q7 Linear Interpolation Function. </p>
<dl><dt><b>Parameters:</b></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="return"><dt><b>Returns:</b></dt><dd>y processed output sample.</dd></dl>
<dl class="user"><dt><b></b></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>
<p>Definition at line <a class="el" href="arm__math_8h_source.html#l05553">5553</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p>
</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Fri Jul 15 2011 13:16:22 for CMSIS DSP Software Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.2 </small></address>
</body>
</html>