⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chan_est.c.htm

📁 is about alamouti channel estimation
💻 HTM
字号:
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>	<title>chan_est.c</title>	<link rel="stylesheet" type="text/css" href="highlight.css"/></head><body><pre><span class="line">    1 </span><span class="dir">#include</span> <span class="dstr">&quot;chan_est_const.h&quot;</span><span class="dir"></span><span class="line">    2 </span><span class="dir"></span><span class="dir">#include</span> <span class="dstr">&quot;chan_est.h&quot;</span><span class="dir"></span><span class="line">    3 </span><span class="dir"></span><span class="dir">#include</span> <span class="dstr">&quot;matrix.h&quot;</span><span class="dir"></span><span class="line">    4 </span><span class="dir"></span><span class="dir">#include</span> <span class="dstr">&quot;matrix_fix.h&quot;</span><span class="dir"></span><span class="line">    5 </span><span class="dir"></span><span class="dir">#include</span> <span class="dstr">&quot;fixed.h&quot;</span><span class="dir"></span><span class="line">    6 </span><span class="dir"></span><span class="line">    7 </span><span class="line">    8 </span><span class="com">/* the equation i'm implementing here is:</span><span class="line">    9 </span><span class="com"> *     H_hat = Y_t * Herm_Conj(X_t) * inverse(X_t * Herm_Conj(X_t))</span><span class="line">   10 </span><span class="com"> */</span><span class="line">   11 </span><span class="line">   12 </span><span class="kwb">void</span> chan_est<span class="sym">(</span><span class="kwb">float</span> rec_re<span class="sym">[</span>TR_ROWS<span class="sym">][</span>TR_COLS<span class="sym">],</span> <span class="kwb">float</span> rec_im<span class="sym">[</span>TR_ROWS<span class="sym">][</span>TR_COLS<span class="sym">],</span> <span class="kwb">float</span> <span class="sym">*</span>est_re<span class="sym">,</span> <span class="kwb">float</span> <span class="sym">*</span>est_im<span class="sym">)</span><span class="line">   13 </span><span class="sym">{</span><span class="line">   14 </span><span class="sym"></span>    <span class="com">/* I'm passing in the received training block, the transmitted training</span><span class="line">   15 </span><span class="com">     * block, and the constant term are defined in &quot;chan_est.h&quot;</span><span class="line">   16 </span><span class="com">     */</span><span class="line">   17 </span><span class="line">   18 </span>    comp_matrix_mult_f<span class="sym">((</span><span class="kwb">float</span> <span class="sym">*)</span>rec_re<span class="sym">, (</span><span class="kwb">float</span> <span class="sym">*)</span>rec_im<span class="sym">,</span> TR_ROWS<span class="sym">,</span> TR_COLS<span class="sym">, (</span><span class="kwb">float</span> <span class="sym">*)</span>const_term_re<span class="sym">, (</span><span class="kwb">float</span> <span class="sym">*)</span>const_term_im<span class="sym">,</span> CONST_ROWS<span class="sym">,</span> CONST_COLS<span class="sym">,</span> est_re<span class="sym">,</span> est_im<span class="sym">);</span><span class="line">   19 </span><span class="sym">}</span><span class="line">   20 </span><span class="sym"></span><span class="line">   21 </span><span class="sym"></span><span class="kwb">void</span> chan_est_fix16<span class="sym">(</span>fix16_t rec_re<span class="sym">[</span>TR_ROWS<span class="sym">][</span>TR_COLS<span class="sym">],</span> fix16_t rec_im<span class="sym">[</span>TR_ROWS<span class="sym">][</span>TR_COLS<span class="sym">],</span> fix16_t <span class="sym">*</span>est_re<span class="sym">,</span> fix16_t <span class="sym">*</span>est_im<span class="sym">)</span><span class="line">   22 </span><span class="sym">{</span><span class="line">   23 </span><span class="sym"></span>    fix16_t const_term_re_16<span class="sym">[</span>CONST_ROWS<span class="sym">][</span>CONST_COLS<span class="sym">];</span><span class="line">   24 </span><span class="sym"></span>    fix16_t const_term_im_16<span class="sym">[</span>CONST_ROWS<span class="sym">][</span>CONST_COLS<span class="sym">];</span><span class="line">   25 </span><span class="sym"></span>    <span class="kwb">int</span> row<span class="sym">,</span>col<span class="sym">;</span><span class="line">   26 </span><span class="sym"></span><span class="line">   27 </span><span class="sym"></span>    <span class="slc">// TODO this should be done at compile time rather than run time!!!</span><span class="line">   28 </span><span class="slc"></span>    <span class="slc">// need to get fixed point version of the constant term</span><span class="line">   29 </span><span class="slc"></span>    <span class="kwa">for</span><span class="sym">(</span>row <span class="sym">=</span> <span class="num">0</span><span class="sym">;</span> row <span class="sym">&lt;</span> CONST_ROWS<span class="sym">;</span> row<span class="sym">++)</span><span class="line">   30 </span><span class="sym">    {</span><span class="line">   31 </span><span class="sym"></span>        <span class="kwa">for</span><span class="sym">(</span>col<span class="sym">=</span><span class="num">0</span><span class="sym">;</span> col <span class="sym">&lt;</span> CONST_COLS<span class="sym">;</span> col<span class="sym">++)</span><span class="line">   32 </span><span class="sym">        {</span><span class="line">   33 </span><span class="sym"></span>            const_term_re_16<span class="sym">[</span>row<span class="sym">][</span>col<span class="sym">] =</span> quantise_16bit_l<span class="sym">((</span>const_term_re<span class="sym">[</span>row<span class="sym">][</span>col<span class="sym">]));</span><span class="line">   34 </span><span class="sym"></span>            const_term_im_16<span class="sym">[</span>row<span class="sym">][</span>col<span class="sym">] =</span> quantise_16bit_l<span class="sym">((</span>const_term_im<span class="sym">[</span>row<span class="sym">][</span>col<span class="sym">]));</span><span class="line">   35 </span><span class="sym">        }</span><span class="line">   36 </span><span class="sym">    }</span><span class="line">   37 </span><span class="sym"></span><span class="line">   38 </span><span class="sym"></span><span class="line">   39 </span><span class="sym"></span>    <span class="com">/* work out `conj(X_t) * inv(X_t * conj(X_t))` */</span><span class="line">   40 </span>    comp_matrix_mult_fix16<span class="sym">((</span>fix16_t <span class="sym">*)</span>rec_re<span class="sym">, (</span>fix16_t <span class="sym">*)</span>rec_im<span class="sym">,</span> TR_ROWS<span class="sym">,</span> TR_COLS<span class="sym">, (</span>fix16_t <span class="sym">*)</span>const_term_re_16<span class="sym">, (</span>fix16_t <span class="sym">*)</span>const_term_im_16<span class="sym">,</span> CONST_ROWS<span class="sym">,</span> CONST_COLS<span class="sym">,</span> est_re<span class="sym">,</span> est_im<span class="sym">);</span><span class="line">   41 </span><span class="sym">}</span></pre></body></html><!--XHTML generated by highlight 2.2-5, http://www.andre-simon.de/-->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -