[353] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
---|
| 2 | <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> |
---|
| 3 | <title>mixpp: itpp::Modulator< T > Class Template Reference</title> |
---|
| 4 | <link href="tabs.css" rel="stylesheet" type="text/css"> |
---|
| 5 | <link href="doxygen.css" rel="stylesheet" type="text/css"> |
---|
| 6 | </head><body> |
---|
| 7 | <!-- Generated by Doxygen 1.5.8 --> |
---|
| 8 | <script type="text/javascript"> |
---|
| 9 | <!-- |
---|
| 10 | function changeDisplayState (e){ |
---|
| 11 | var num=this.id.replace(/[^[0-9]/g,''); |
---|
| 12 | var button=this.firstChild; |
---|
| 13 | var sectionDiv=document.getElementById('dynsection'+num); |
---|
| 14 | if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){ |
---|
| 15 | sectionDiv.style.display='block'; |
---|
| 16 | button.src='open.gif'; |
---|
| 17 | }else{ |
---|
| 18 | sectionDiv.style.display='none'; |
---|
| 19 | button.src='closed.gif'; |
---|
| 20 | } |
---|
| 21 | } |
---|
| 22 | function initDynSections(){ |
---|
| 23 | var divs=document.getElementsByTagName('div'); |
---|
| 24 | var sectionCounter=1; |
---|
| 25 | for(var i=0;i<divs.length-1;i++){ |
---|
| 26 | if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){ |
---|
| 27 | var header=divs[i]; |
---|
| 28 | var section=divs[i+1]; |
---|
| 29 | var button=header.firstChild; |
---|
| 30 | if (button!='IMG'){ |
---|
| 31 | divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild); |
---|
| 32 | button=document.createElement('img'); |
---|
| 33 | divs[i].insertBefore(button,divs[i].firstChild); |
---|
| 34 | } |
---|
| 35 | header.style.cursor='pointer'; |
---|
| 36 | header.onclick=changeDisplayState; |
---|
| 37 | header.id='dynheader'+sectionCounter; |
---|
| 38 | button.src='closed.gif'; |
---|
| 39 | section.id='dynsection'+sectionCounter; |
---|
| 40 | section.style.display='none'; |
---|
| 41 | section.style.marginLeft='14px'; |
---|
| 42 | sectionCounter++; |
---|
| 43 | } |
---|
| 44 | } |
---|
| 45 | } |
---|
| 46 | window.onload = initDynSections; |
---|
| 47 | --> |
---|
| 48 | </script> |
---|
| 49 | <div class="navigation" id="top"> |
---|
| 50 | <div class="tabs"> |
---|
| 51 | <ul> |
---|
| 52 | <li><a href="main.html"><span>Main Page</span></a></li> |
---|
| 53 | <li><a href="pages.html"><span>Related Pages</span></a></li> |
---|
| 54 | <li><a href="modules.html"><span>Modules</span></a></li> |
---|
| 55 | <li class="current"><a href="annotated.html"><span>Classes</span></a></li> |
---|
| 56 | <li><a href="files.html"><span>Files</span></a></li> |
---|
| 57 | </ul> |
---|
| 58 | </div> |
---|
| 59 | <div class="tabs"> |
---|
| 60 | <ul> |
---|
| 61 | <li><a href="annotated.html"><span>Class List</span></a></li> |
---|
| 62 | <li><a href="classes.html"><span>Class Index</span></a></li> |
---|
| 63 | <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> |
---|
| 64 | <li><a href="functions.html"><span>Class Members</span></a></li> |
---|
| 65 | </ul> |
---|
| 66 | </div> |
---|
| 67 | <div class="navpath"><b>itpp</b>::<a class="el" href="classitpp_1_1Modulator.html">Modulator</a> |
---|
| 68 | </div> |
---|
| 69 | </div> |
---|
| 70 | <div class="contents"> |
---|
| 71 | <h1>itpp::Modulator< T > Class Template Reference<br> |
---|
| 72 | <small> |
---|
| 73 | [<a class="el" href="group__modulators.html">Digital Modulation</a>]</small> |
---|
| 74 | </h1><!-- doxytag: class="itpp::Modulator" -->General modulator for 1D or 2D signal constellations. |
---|
| 75 | <a href="#_details">More...</a> |
---|
| 76 | <p> |
---|
| 77 | <code>#include <<a class="el" href="modulator_8h-source.html">modulator.h</a>></code> |
---|
| 78 | <p> |
---|
| 79 | |
---|
| 80 | <p> |
---|
| 81 | <a href="classitpp_1_1Modulator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> |
---|
| 82 | <tr><td></td></tr> |
---|
| 83 | <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> |
---|
| 84 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3306fe1944bb997c9584a7238ec3d53"></a><!-- doxytag: member="itpp::Modulator::Modulator" ref="a3306fe1944bb997c9584a7238ec3d53" args="()" --> |
---|
| 85 | </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#a3306fe1944bb997c9584a7238ec3d53">Modulator</a> ()</td></tr> |
---|
| 86 | |
---|
| 87 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br></td></tr> |
---|
| 88 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0f04d4e434d5f5b4d427ef153d724c33"></a><!-- doxytag: member="itpp::Modulator::Modulator" ref="0f04d4e434d5f5b4d427ef153d724c33" args="(const Vec< T > &symbols, const ivec &bits2symbols)" --> |
---|
| 89 | </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#0f04d4e434d5f5b4d427ef153d724c33">Modulator</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &<a class="el" href="classitpp_1_1Modulator.html#3069840e9e7a44180615fb772cf9ae42">symbols</a>, const ivec &<a class="el" href="classitpp_1_1Modulator.html#3ca26614189cb7a66da369bf0c4b9070">bits2symbols</a>)</td></tr> |
---|
| 90 | |
---|
| 91 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br></td></tr> |
---|
| 92 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ce8f01d9637358c1dbfd1a605fdaf091"></a><!-- doxytag: member="itpp::Modulator::~Modulator" ref="ce8f01d9637358c1dbfd1a605fdaf091" args="()" --> |
---|
| 93 | virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#ce8f01d9637358c1dbfd1a605fdaf091">~Modulator</a> ()</td></tr> |
---|
| 94 | |
---|
| 95 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br></td></tr> |
---|
| 96 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b9722a6826869c6d6e15a9835d76239b"></a><!-- doxytag: member="itpp::Modulator::set" ref="b9722a6826869c6d6e15a9835d76239b" args="(const Vec< T > &symbols, const ivec &bits2symbols)" --> |
---|
| 97 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#b9722a6826869c6d6e15a9835d76239b">set</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &<a class="el" href="classitpp_1_1Modulator.html#3069840e9e7a44180615fb772cf9ae42">symbols</a>, const ivec &<a class="el" href="classitpp_1_1Modulator.html#3ca26614189cb7a66da369bf0c4b9070">bits2symbols</a>)</td></tr> |
---|
| 98 | |
---|
| 99 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the constellation to use in the modulator. <br></td></tr> |
---|
| 100 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6e7cfa06570e2a1de515be5222a53a83"></a><!-- doxytag: member="itpp::Modulator::bits_per_symbol" ref="6e7cfa06570e2a1de515be5222a53a83" args="() const " --> |
---|
| 101 | virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#6e7cfa06570e2a1de515be5222a53a83">bits_per_symbol</a> () const </td></tr> |
---|
| 102 | |
---|
| 103 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of bits per symbol. <br></td></tr> |
---|
| 104 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="28b1c28bf8f4596e4d5149f1f3c8cd76"></a><!-- doxytag: member="itpp::Modulator::get_symbols" ref="28b1c28bf8f4596e4d5149f1f3c8cd76" args="() const " --> |
---|
| 105 | virtual <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#28b1c28bf8f4596e4d5149f1f3c8cd76">get_symbols</a> () const </td></tr> |
---|
| 106 | |
---|
| 107 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the symbol values used in the modulator. <br></td></tr> |
---|
| 108 | <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#a8186f0e837fd3d440a6acb7a0225d35">get_bits2symbols</a> () const </td></tr> |
---|
| 109 | |
---|
| 110 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the bitmap, which maps input bits into symbols. <a href="#a8186f0e837fd3d440a6acb7a0225d35"></a><br></td></tr> |
---|
| 111 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4f7bde9d3bfa9e39c06017534e3f6647"></a><!-- doxytag: member="itpp::Modulator::modulate" ref="4f7bde9d3bfa9e39c06017534e3f6647" args="(const ivec &symbolnumbers, Vec< T > &output) const " --> |
---|
| 112 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#4f7bde9d3bfa9e39c06017534e3f6647">modulate</a> (const ivec &symbolnumbers, <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &output) const </td></tr> |
---|
| 113 | |
---|
| 114 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Modulation of symbols. <br></td></tr> |
---|
| 115 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0cb2673987e110920b519c139cdebe1"></a><!-- doxytag: member="itpp::Modulator::modulate" ref="e0cb2673987e110920b519c139cdebe1" args="(const ivec &symbolnumbers) const " --> |
---|
| 116 | virtual <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#e0cb2673987e110920b519c139cdebe1">modulate</a> (const ivec &symbolnumbers) const </td></tr> |
---|
| 117 | |
---|
| 118 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Modulation of symbols. <br></td></tr> |
---|
| 119 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="845b5fbf4dad59edd3772627250623a1"></a><!-- doxytag: member="itpp::Modulator::demodulate" ref="845b5fbf4dad59edd3772627250623a1" args="(const Vec< T > &signal, ivec &output) const " --> |
---|
| 120 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#845b5fbf4dad59edd3772627250623a1">demodulate</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &signal, ivec &output) const </td></tr> |
---|
| 121 | |
---|
| 122 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Demodulation of symbols. <br></td></tr> |
---|
| 123 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7f2c15efa18d1cb46b8c97723c11ec9d"></a><!-- doxytag: member="itpp::Modulator::demodulate" ref="7f2c15efa18d1cb46b8c97723c11ec9d" args="(const Vec< T > &signal) const " --> |
---|
| 124 | virtual ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#7f2c15efa18d1cb46b8c97723c11ec9d">demodulate</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &signal) const </td></tr> |
---|
| 125 | |
---|
| 126 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Demodulation of symbols. <br></td></tr> |
---|
| 127 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="53826bf7e0ec83b99592235b0c2f6235"></a><!-- doxytag: member="itpp::Modulator::modulate_bits" ref="53826bf7e0ec83b99592235b0c2f6235" args="(const bvec &bits, Vec< T > &output) const " --> |
---|
| 128 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#53826bf7e0ec83b99592235b0c2f6235">modulate_bits</a> (const bvec &bits, <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &output) const </td></tr> |
---|
| 129 | |
---|
| 130 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Modulation of bits. <br></td></tr> |
---|
| 131 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="622fa1ce4243330b7efa0605a9492513"></a><!-- doxytag: member="itpp::Modulator::modulate_bits" ref="622fa1ce4243330b7efa0605a9492513" args="(const bvec &bits) const " --> |
---|
| 132 | virtual <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#622fa1ce4243330b7efa0605a9492513">modulate_bits</a> (const bvec &bits) const </td></tr> |
---|
| 133 | |
---|
| 134 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Modulation of bits. <br></td></tr> |
---|
| 135 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4d03bbe8bd467898f149d5f134f6f120"></a><!-- doxytag: member="itpp::Modulator::demodulate_bits" ref="4d03bbe8bd467898f149d5f134f6f120" args="(const Vec< T > &signal, bvec &bits) const " --> |
---|
| 136 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#4d03bbe8bd467898f149d5f134f6f120">demodulate_bits</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &signal, bvec &bits) const </td></tr> |
---|
| 137 | |
---|
| 138 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Hard demodulation of bits. <br></td></tr> |
---|
| 139 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9e3432dad687ac0ee102c208e34920f8"></a><!-- doxytag: member="itpp::Modulator::demodulate_bits" ref="9e3432dad687ac0ee102c208e34920f8" args="(const Vec< T > &signal) const " --> |
---|
| 140 | virtual bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#9e3432dad687ac0ee102c208e34920f8">demodulate_bits</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &signal) const </td></tr> |
---|
| 141 | |
---|
| 142 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Hard demodulation of bits. <br></td></tr> |
---|
| 143 | <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#9beffaf8f69378f9c20a85f3023bd9af">demodulate_soft_bits</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &rx_symbols, double N0, vec &soft_bits, <a class="el" href="group__modulators.html#g5128af4688e1a1caa84e1fabf051faa7">Soft_Method</a> method=LOGMAP) const </td></tr> |
---|
| 144 | |
---|
| 145 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Soft demodulator for AWGN channels. <a href="#9beffaf8f69378f9c20a85f3023bd9af"></a><br></td></tr> |
---|
| 146 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a9cba88e460e11775fb72d21b543c375"></a><!-- doxytag: member="itpp::Modulator::demodulate_soft_bits" ref="a9cba88e460e11775fb72d21b543c375" args="(const Vec< T > &rx_symbols, double N0, Soft_Method method=LOGMAP) const " --> |
---|
| 147 | virtual vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#a9cba88e460e11775fb72d21b543c375">demodulate_soft_bits</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &rx_symbols, double N0, <a class="el" href="group__modulators.html#g5128af4688e1a1caa84e1fabf051faa7">Soft_Method</a> method=LOGMAP) const </td></tr> |
---|
| 148 | |
---|
| 149 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Soft demodulator for AWGN channels. <br></td></tr> |
---|
| 150 | <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#bd014d868b4f883712f92a7130401714">demodulate_soft_bits</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &rx_symbols, const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &channel, double N0, vec &soft_bits, <a class="el" href="group__modulators.html#g5128af4688e1a1caa84e1fabf051faa7">Soft_Method</a> method=LOGMAP) const </td></tr> |
---|
| 151 | |
---|
| 152 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Soft demodulator for fading channels. <a href="#bd014d868b4f883712f92a7130401714"></a><br></td></tr> |
---|
| 153 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e40b7afd0d38d2d86b561b9dff6f55fd"></a><!-- doxytag: member="itpp::Modulator::demodulate_soft_bits" ref="e40b7afd0d38d2d86b561b9dff6f55fd" args="(const Vec< T > &rx_symbols, const Vec< T > &channel, double N0, Soft_Method method=LOGMAP) const " --> |
---|
| 154 | virtual vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#e40b7afd0d38d2d86b561b9dff6f55fd">demodulate_soft_bits</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &rx_symbols, const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > &channel, double N0, <a class="el" href="group__modulators.html#g5128af4688e1a1caa84e1fabf051faa7">Soft_Method</a> method=LOGMAP) const </td></tr> |
---|
| 155 | |
---|
| 156 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Soft demodulator for fading channels. <br></td></tr> |
---|
| 157 | <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> |
---|
| 158 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bb3e654a3fb6d127ee8d266677689233"></a><!-- doxytag: member="itpp::Modulator::calculate_softbit_matrices" ref="bb3e654a3fb6d127ee8d266677689233" args="()" --> |
---|
| 159 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#bb3e654a3fb6d127ee8d266677689233">calculate_softbit_matrices</a> ()</td></tr> |
---|
| 160 | |
---|
| 161 | <tr><td class="mdescLeft"> </td><td class="mdescRight">This function calculates the soft bit mapping matrices S0 and S1. <br></td></tr> |
---|
| 162 | <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> |
---|
| 163 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="552cd7add3e998eca485d0ea39808e0d"></a><!-- doxytag: member="itpp::Modulator::setup_done" ref="552cd7add3e998eca485d0ea39808e0d" args="" --> |
---|
| 164 | bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#552cd7add3e998eca485d0ea39808e0d">setup_done</a></td></tr> |
---|
| 165 | |
---|
| 166 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Setup indicator. <br></td></tr> |
---|
| 167 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3656edc52486e0551b734b32ab67d3b6"></a><!-- doxytag: member="itpp::Modulator::k" ref="3656edc52486e0551b734b32ab67d3b6" args="" --> |
---|
| 168 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#3656edc52486e0551b734b32ab67d3b6">k</a></td></tr> |
---|
| 169 | |
---|
| 170 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of bits per modulation symbol. <br></td></tr> |
---|
| 171 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a434960c7ff9e5356d832aa53b46930b"></a><!-- doxytag: member="itpp::Modulator::M" ref="a434960c7ff9e5356d832aa53b46930b" args="" --> |
---|
| 172 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#a434960c7ff9e5356d832aa53b46930b">M</a></td></tr> |
---|
| 173 | |
---|
| 174 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of modulation symbols. <br></td></tr> |
---|
| 175 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1b1a9a706c0736c51966703bea58cf48"></a><!-- doxytag: member="itpp::Modulator::bitmap" ref="1b1a9a706c0736c51966703bea58cf48" args="" --> |
---|
| 176 | <a class="el" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69">bmat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#1b1a9a706c0736c51966703bea58cf48">bitmap</a></td></tr> |
---|
| 177 | |
---|
| 178 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Bit to symbol mapping table (size: M x k). <br></td></tr> |
---|
| 179 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ca26614189cb7a66da369bf0c4b9070"></a><!-- doxytag: member="itpp::Modulator::bits2symbols" ref="3ca26614189cb7a66da369bf0c4b9070" args="" --> |
---|
| 180 | ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#3ca26614189cb7a66da369bf0c4b9070">bits2symbols</a></td></tr> |
---|
| 181 | |
---|
| 182 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Bit to symbol mapping in decimal form (size: M). <br></td></tr> |
---|
| 183 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3069840e9e7a44180615fb772cf9ae42"></a><!-- doxytag: member="itpp::Modulator::symbols" ref="3069840e9e7a44180615fb772cf9ae42" args="" --> |
---|
| 184 | <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#3069840e9e7a44180615fb772cf9ae42">symbols</a></td></tr> |
---|
| 185 | |
---|
| 186 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Corresponding modulation symbols (size: M). <br></td></tr> |
---|
| 187 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c19c8fe07e95e4eb80e832a633b7c422"></a><!-- doxytag: member="itpp::Modulator::S0" ref="c19c8fe07e95e4eb80e832a633b7c422" args="" --> |
---|
| 188 | imat </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#c19c8fe07e95e4eb80e832a633b7c422">S0</a></td></tr> |
---|
| 189 | |
---|
| 190 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Matrix where row k contains the constellation points with '0' in bit position k. <br></td></tr> |
---|
| 191 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9d4c223ffd96fdc5b26ba5c44956998b"></a><!-- doxytag: member="itpp::Modulator::S1" ref="9d4c223ffd96fdc5b26ba5c44956998b" args="" --> |
---|
| 192 | imat </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#9d4c223ffd96fdc5b26ba5c44956998b">S1</a></td></tr> |
---|
| 193 | |
---|
| 194 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Matrix where row k contains the constellation points with '1' in bit position k. <br></td></tr> |
---|
| 195 | <tr><td colspan="2"><br><h2>Related Functions</h2></td></tr> |
---|
| 196 | <tr><td colspan="2">(Note that these are not member functions.) <br><br></td></tr> |
---|
| 197 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d47d1377dffb2aed9f21f8f976e80a0a"></a><!-- doxytag: member="itpp::Modulator::Modulator_1D" ref="d47d1377dffb2aed9f21f8f976e80a0a" args="" --> |
---|
| 198 | typedef <a class="el" href="classitpp_1_1Modulator.html">Modulator</a>< double > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#d47d1377dffb2aed9f21f8f976e80a0a">Modulator_1D</a></td></tr> |
---|
| 199 | |
---|
| 200 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Definition of 1D <a class="el" href="classitpp_1_1Modulator.html" title="General modulator for 1D or 2D signal constellations.">Modulator</a> (with real symbols). <br></td></tr> |
---|
| 201 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="97dc4e87ae4fa63c4e7dbbeac0ab00b0"></a><!-- doxytag: member="itpp::Modulator::Modulator_2D" ref="97dc4e87ae4fa63c4e7dbbeac0ab00b0" args="" --> |
---|
| 202 | typedef <a class="el" href="classitpp_1_1Modulator.html">Modulator</a><br class="typebreak"> |
---|
| 203 | < std::complex< double > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Modulator.html#97dc4e87ae4fa63c4e7dbbeac0ab00b0">Modulator_2D</a></td></tr> |
---|
| 204 | |
---|
| 205 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Definition of 2D <a class="el" href="classitpp_1_1Modulator.html" title="General modulator for 1D or 2D signal constellations.">Modulator</a> (with complex symbols). <br></td></tr> |
---|
| 206 | </table> |
---|
| 207 | <hr><a name="_details"></a><h2>Detailed Description</h2> |
---|
| 208 | <h3>template<typename T><br> |
---|
| 209 | class itpp::Modulator< T ></h3> |
---|
| 210 | |
---|
| 211 | General modulator for 1D or 2D signal constellations. |
---|
| 212 | <p> |
---|
| 213 | The <a class="el" href="classitpp_1_1Modulator.html" title="General modulator for 1D or 2D signal constellations.">Modulator</a> class is designed for modeling any kind of 1D (real) or 2D (complex) signal constellations. Therefore it is used as a base class for such modulations like <a class="el" href="classitpp_1_1PAM.html" title="M-ary PAM modulator with real symbols.">PAM</a>, <a class="el" href="classitpp_1_1PSK.html" title="M-ary PSK modulator.">PSK</a>, <a class="el" href="classitpp_1_1QAM.html" title="M-ary QAM modulator with square lattice.">QAM</a>, etc.<p> |
---|
| 214 | The constellation of the modulator is described with two vectors. The first one contains the real or complex values representing the constellation points, whereas the other one includes the corresponding bit to symbol mapping (in the decimal from).<p> |
---|
| 215 | Beside hard demapping, this class can also perform soft demodulation. To use it properly the received symbols should be equal to: <p class="formulaDsp"> |
---|
| 216 | <img class="formulaDsp" alt="\[r_k = c_k s_k + n_k,\]" src="form_252.png"> |
---|
| 217 | <p> |
---|
| 218 | where <img class="formulaInl" alt="$c_k$" src="form_253.png"> is the real or complex channel gain, <img class="formulaInl" alt="$s_k$" src="form_254.png"> is the transmitted constellation symbol, and <img class="formulaInl" alt="$n_k$" src="form_255.png"> is the AWGN of the channel (with variance <img class="formulaInl" alt="$N_0$" src="form_233.png">).<p> |
---|
| 219 | It is also assumed that the channel estimates are perfect when calculating the soft bits. <hr><h2>Member Function Documentation</h2> |
---|
| 220 | <a class="anchor" name="bd014d868b4f883712f92a7130401714"></a><!-- doxytag: member="itpp::Modulator::demodulate_soft_bits" ref="bd014d868b4f883712f92a7130401714" args="(const Vec< T > &rx_symbols, const Vec< T > &channel, double N0, vec &soft_bits, Soft_Method method=LOGMAP) const " --> |
---|
| 221 | <div class="memitem"> |
---|
| 222 | <div class="memproto"> |
---|
| 223 | <div class="memtemplate"> |
---|
| 224 | template<typename T> </div> |
---|
| 225 | <table class="memname"> |
---|
| 226 | <tr> |
---|
| 227 | <td class="memname">void <a class="el" href="classitpp_1_1Modulator.html">itpp::Modulator</a>< T >::demodulate_soft_bits </td> |
---|
| 228 | <td>(</td> |
---|
| 229 | <td class="paramtype">const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > & </td> |
---|
| 230 | <td class="paramname"> <em>rx_symbols</em>, </td> |
---|
| 231 | </tr> |
---|
| 232 | <tr> |
---|
| 233 | <td class="paramkey"></td> |
---|
| 234 | <td></td> |
---|
| 235 | <td class="paramtype">const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > & </td> |
---|
| 236 | <td class="paramname"> <em>channel</em>, </td> |
---|
| 237 | </tr> |
---|
| 238 | <tr> |
---|
| 239 | <td class="paramkey"></td> |
---|
| 240 | <td></td> |
---|
| 241 | <td class="paramtype">double </td> |
---|
| 242 | <td class="paramname"> <em>N0</em>, </td> |
---|
| 243 | </tr> |
---|
| 244 | <tr> |
---|
| 245 | <td class="paramkey"></td> |
---|
| 246 | <td></td> |
---|
| 247 | <td class="paramtype">vec & </td> |
---|
| 248 | <td class="paramname"> <em>soft_bits</em>, </td> |
---|
| 249 | </tr> |
---|
| 250 | <tr> |
---|
| 251 | <td class="paramkey"></td> |
---|
| 252 | <td></td> |
---|
| 253 | <td class="paramtype"><a class="el" href="group__modulators.html#g5128af4688e1a1caa84e1fabf051faa7">Soft_Method</a> </td> |
---|
| 254 | <td class="paramname"> <em>method</em> = <code>LOGMAP</code></td><td> </td> |
---|
| 255 | </tr> |
---|
| 256 | <tr> |
---|
| 257 | <td></td> |
---|
| 258 | <td>)</td> |
---|
| 259 | <td></td><td></td><td> const<code> [inline, virtual]</code></td> |
---|
| 260 | </tr> |
---|
| 261 | </table> |
---|
| 262 | </div> |
---|
| 263 | <div class="memdoc"> |
---|
| 264 | |
---|
| 265 | <p> |
---|
| 266 | Soft demodulator for fading channels. |
---|
| 267 | <p> |
---|
| 268 | This function calculates the log-likelihood ratio (LLR) of the received signal from fading channels. Depending on the soft demodulation method chosen, either full log-MAP calculation is performed (default method), according to the following equation: <p class="formulaDsp"> |
---|
| 269 | <img class="formulaDsp" alt="\[\log \left( \frac{P(b_i=0|r)}{P(b_i=1|r)} \right) = \log \left( \frac{\sum_{s_i \in S_0} \exp \left( -\frac{|r_k - c_k s_i|^2}{N_0} \right)} {\sum_{s_i \in S_1} \exp \left( -\frac{|r_k - c_k s_i|^2}{N_0} \right)} \right) \]" src="form_275.png"> |
---|
| 270 | <p> |
---|
| 271 | or approximate, but faster calculation is performed.<p> |
---|
| 272 | The approximate method finds for each bit the closest constellation points that have zero and one in the corresponding position. Let <img class="formulaInl" alt="$d_0 = |r_k - c_k s_0|$" src="form_276.png"> denote the distance to the closest zero point and <img class="formulaInl" alt="$d_1 = |r_k - c_k s_1|$" src="form_277.png"> denote the distance to the closest one point for the corresponding bit respectively. The approximate algorithm then computes <p class="formulaDsp"> |
---|
| 273 | <img class="formulaDsp" alt="\[\frac{d_1^2 - d_0^2}{N_0}\]" src="form_272.png"> |
---|
| 274 | <p> |
---|
| 275 | <p> |
---|
| 276 | When this function is to be used together with MAP-based turbo decoding algorithms then the channel reliability factor <img class="formulaInl" alt="$L_c$" src="form_274.png"> of the turbo decoder shall be set to 1. The output from this function can also be used by a Viterbi decoder using an AWGN based metric calculation function.<p> |
---|
| 277 | <dl compact><dt><b>Parameters:</b></dt><dd> |
---|
| 278 | <table border="0" cellspacing="2" cellpadding="0"> |
---|
| 279 | <tr><td valign="top"></td><td valign="top"><em>rx_symbols</em> </td><td>The received noisy constellation symbols <img class="formulaInl" alt="$r_k$" src="form_278.png"> </td></tr> |
---|
| 280 | <tr><td valign="top"></td><td valign="top"><em>channel</em> </td><td>The channel values <img class="formulaInl" alt="$c_k$" src="form_253.png"> </td></tr> |
---|
| 281 | <tr><td valign="top"></td><td valign="top"><em>N0</em> </td><td>The spectral density of the AWGN noise </td></tr> |
---|
| 282 | <tr><td valign="top"></td><td valign="top"><em>soft_bits</em> </td><td>The soft bits calculated using the expression above </td></tr> |
---|
| 283 | <tr><td valign="top"></td><td valign="top"><em>method</em> </td><td>The method used for demodulation (LOGMAP or APPROX)</td></tr> |
---|
| 284 | </table> |
---|
| 285 | </dl> |
---|
| 286 | <dl class="note" compact><dt><b>Note:</b></dt><dd>For soft demodulation it is suggested to use the N-dimensional modulator (<a class="el" href="classitpp_1_1Modulator__ND.html" title="Base class for an N-dimensional (ND) vector (MIMO) modulator.">Modulator_ND</a>) instead, which is based on the QLLR (quantized) arithmetic and therefore is faster. Please note, however, that mixed use of <code>Modulator_1D/<code>Modulator_2D</code> and</code> <code><a class="el" href="classitpp_1_1Modulator__ND.html" title="Base class for an N-dimensional (ND) vector (MIMO) modulator.">Modulator_ND</a></code> is not advised. </dd></dl> |
---|
| 287 | |
---|
| 288 | <p>References <a class="el" href="log__exp_8h-source.html#l00172">itpp::exp()</a>, <a class="el" href="itassert_8h-source.html#l00107">it_assert_debug</a>, <a class="el" href="modulator_8h-source.html#l00228">itpp::Modulator< T >::k</a>, <a class="el" href="modulator_8h-source.html#l00047">itpp::LOGMAP</a>, <a class="el" href="modulator_8h-source.html#l00230">itpp::Modulator< T >::M</a>, <a class="el" href="tcp_8h-source.html#l00117">itpp::max()</a>, <a class="el" href="modulator_8h-source.html#l00239">itpp::Modulator< T >::S0</a>, <a class="el" href="modulator_8h-source.html#l00242">itpp::Modulator< T >::S1</a>, <a class="el" href="modulator_8h-source.html#l00226">itpp::Modulator< T >::setup_done</a>, <a class="el" href="vec_8h-source.html#l00277">itpp::Vec< Num_T >::size()</a>, <a class="el" href="elem__math_8h-source.html#l00056">itpp::sqr()</a>, <a class="el" href="modulator_8h-source.html#l00236">itpp::Modulator< T >::symbols</a>, and <a class="el" href="log__exp_8h-source.html#l00105">itpp::trunc_log()</a>.</p> |
---|
| 289 | |
---|
| 290 | </div> |
---|
| 291 | </div><p> |
---|
| 292 | <a class="anchor" name="9beffaf8f69378f9c20a85f3023bd9af"></a><!-- doxytag: member="itpp::Modulator::demodulate_soft_bits" ref="9beffaf8f69378f9c20a85f3023bd9af" args="(const Vec< T > &rx_symbols, double N0, vec &soft_bits, Soft_Method method=LOGMAP) const " --> |
---|
| 293 | <div class="memitem"> |
---|
| 294 | <div class="memproto"> |
---|
| 295 | <div class="memtemplate"> |
---|
| 296 | template<typename T> </div> |
---|
| 297 | <table class="memname"> |
---|
| 298 | <tr> |
---|
| 299 | <td class="memname">void <a class="el" href="classitpp_1_1Modulator.html">itpp::Modulator</a>< T >::demodulate_soft_bits </td> |
---|
| 300 | <td>(</td> |
---|
| 301 | <td class="paramtype">const <a class="el" href="classitpp_1_1Vec.html">Vec</a>< T > & </td> |
---|
| 302 | <td class="paramname"> <em>rx_symbols</em>, </td> |
---|
| 303 | </tr> |
---|
| 304 | <tr> |
---|
| 305 | <td class="paramkey"></td> |
---|
| 306 | <td></td> |
---|
| 307 | <td class="paramtype">double </td> |
---|
| 308 | <td class="paramname"> <em>N0</em>, </td> |
---|
| 309 | </tr> |
---|
| 310 | <tr> |
---|
| 311 | <td class="paramkey"></td> |
---|
| 312 | <td></td> |
---|
| 313 | <td class="paramtype">vec & </td> |
---|
| 314 | <td class="paramname"> <em>soft_bits</em>, </td> |
---|
| 315 | </tr> |
---|
| 316 | <tr> |
---|
| 317 | <td class="paramkey"></td> |
---|
| 318 | <td></td> |
---|
| 319 | <td class="paramtype"><a class="el" href="group__modulators.html#g5128af4688e1a1caa84e1fabf051faa7">Soft_Method</a> </td> |
---|
| 320 | <td class="paramname"> <em>method</em> = <code>LOGMAP</code></td><td> </td> |
---|
| 321 | </tr> |
---|
| 322 | <tr> |
---|
| 323 | <td></td> |
---|
| 324 | <td>)</td> |
---|
| 325 | <td></td><td></td><td> const<code> [inline, virtual]</code></td> |
---|
| 326 | </tr> |
---|
| 327 | </table> |
---|
| 328 | </div> |
---|
| 329 | <div class="memdoc"> |
---|
| 330 | |
---|
| 331 | <p> |
---|
| 332 | Soft demodulator for AWGN channels. |
---|
| 333 | <p> |
---|
| 334 | This function calculates the log-likelihood ratio (LLR) of the received signal from AWGN channels. Depending on the soft demodulation method chosen, either full log-MAP calculation is performed (default method), according to the following equation: <p class="formulaDsp"> |
---|
| 335 | <img class="formulaDsp" alt="\[\log \left( \frac{P(b_i=0|r)}{P(b_i=1|r)} \right) = \log \left( \frac{\sum_{s_i \in S_0} \exp \left( -\frac{|r_k - s_i|^2}{N_0} \right)} {\sum_{s_i \in S_1} \exp \left( -\frac{|r_k - s_i|^2}{N_0} \right)} \right) \]" src="form_269.png"> |
---|
| 336 | <p> |
---|
| 337 | or approximate, but faster calculation is performed.<p> |
---|
| 338 | The approximate method finds for each bit the closest constellation points that have zero and one in the corresponding position. Let <img class="formulaInl" alt="$d_0 = |r_k - s_0|$" src="form_270.png"> denote the distance to the closest zero point and <img class="formulaInl" alt="$d_1 = |r_k - s_1|$" src="form_271.png"> denote the distance to the closest one point for the corresponding bit respectively. The approximate algorithm then computes <p class="formulaDsp"> |
---|
| 339 | <img class="formulaDsp" alt="\[\frac{d_1^2 - d_0^2}{N_0}\]" src="form_272.png"> |
---|
| 340 | <p> |
---|
| 341 | <p> |
---|
| 342 | This function can be used on channels where the channel gain <img class="formulaInl" alt="$c_k = 1$" src="form_273.png">.<p> |
---|
| 343 | When this function is to be used together with MAP-based turbo decoding algorithms then the channel reliability factor <img class="formulaInl" alt="$L_c$" src="form_274.png"> of the turbo decoder shall be set to 1. The output from this function can also be used by a Viterbi decoder using an AWGN based metric calculation function.<p> |
---|
| 344 | <dl compact><dt><b>Parameters:</b></dt><dd> |
---|
| 345 | <table border="0" cellspacing="2" cellpadding="0"> |
---|
| 346 | <tr><td valign="top"></td><td valign="top"><em>rx_symbols</em> </td><td>The received noisy constellation symbols </td></tr> |
---|
| 347 | <tr><td valign="top"></td><td valign="top"><em>N0</em> </td><td>The spectral density of the AWGN noise </td></tr> |
---|
| 348 | <tr><td valign="top"></td><td valign="top"><em>soft_bits</em> </td><td>The soft bits calculated using the expression above </td></tr> |
---|
| 349 | <tr><td valign="top"></td><td valign="top"><em>method</em> </td><td>The method used for demodulation (LOGMAP or APPROX)</td></tr> |
---|
| 350 | </table> |
---|
| 351 | </dl> |
---|
| 352 | <dl class="note" compact><dt><b>Note:</b></dt><dd>For soft demodulation it is suggested to use the N-dimensional modulator (<code><a class="el" href="classitpp_1_1Modulator__ND.html" title="Base class for an N-dimensional (ND) vector (MIMO) modulator.">Modulator_ND</a></code>) instead, which is based on the QLLR (quantized) arithmetic and therefore is faster. Please note, however, that mixed use of <code>Modulator_1D/<code>Modulator_2D</code> and</code> <code><a class="el" href="classitpp_1_1Modulator__ND.html" title="Base class for an N-dimensional (ND) vector (MIMO) modulator.">Modulator_ND</a></code> is not advised. </dd></dl> |
---|
| 353 | |
---|
| 354 | <p>References <a class="el" href="log__exp_8h-source.html#l00172">itpp::exp()</a>, <a class="el" href="itassert_8h-source.html#l00107">it_assert_debug</a>, <a class="el" href="modulator_8h-source.html#l00228">itpp::Modulator< T >::k</a>, <a class="el" href="modulator_8h-source.html#l00047">itpp::LOGMAP</a>, <a class="el" href="modulator_8h-source.html#l00230">itpp::Modulator< T >::M</a>, <a class="el" href="tcp_8h-source.html#l00117">itpp::max()</a>, <a class="el" href="modulator_8h-source.html#l00239">itpp::Modulator< T >::S0</a>, <a class="el" href="modulator_8h-source.html#l00242">itpp::Modulator< T >::S1</a>, <a class="el" href="modulator_8h-source.html#l00226">itpp::Modulator< T >::setup_done</a>, <a class="el" href="vec_8h-source.html#l00277">itpp::Vec< Num_T >::size()</a>, <a class="el" href="elem__math_8h-source.html#l00056">itpp::sqr()</a>, <a class="el" href="modulator_8h-source.html#l00236">itpp::Modulator< T >::symbols</a>, and <a class="el" href="log__exp_8h-source.html#l00105">itpp::trunc_log()</a>.</p> |
---|
| 355 | |
---|
| 356 | <p>Referenced by <a class="el" href="modulator_8h-source.html#l00453">itpp::Modulator< T >::demodulate_soft_bits()</a>.</p> |
---|
| 357 | |
---|
| 358 | </div> |
---|
| 359 | </div><p> |
---|
| 360 | <a class="anchor" name="a8186f0e837fd3d440a6acb7a0225d35"></a><!-- doxytag: member="itpp::Modulator::get_bits2symbols" ref="a8186f0e837fd3d440a6acb7a0225d35" args="() const " --> |
---|
| 361 | <div class="memitem"> |
---|
| 362 | <div class="memproto"> |
---|
| 363 | <div class="memtemplate"> |
---|
| 364 | template<typename T> </div> |
---|
| 365 | <table class="memname"> |
---|
| 366 | <tr> |
---|
| 367 | <td class="memname">virtual ivec <a class="el" href="classitpp_1_1Modulator.html">itpp::Modulator</a>< T >::get_bits2symbols </td> |
---|
| 368 | <td>(</td> |
---|
| 369 | <td class="paramname"> </td> |
---|
| 370 | <td> ) </td> |
---|
| 371 | <td> const<code> [inline, virtual]</code></td> |
---|
| 372 | </tr> |
---|
| 373 | </table> |
---|
| 374 | </div> |
---|
| 375 | <div class="memdoc"> |
---|
| 376 | |
---|
| 377 | <p> |
---|
| 378 | Get the bitmap, which maps input bits into symbols. |
---|
| 379 | <p> |
---|
| 380 | The mapping is done as follows. An input bit sequence in decimal notation is used for indexing the <code>bits2symbols</code> table. The indexing result denotes the symbol to be used from the <code>symbols</code> table, e.g.:<p> |
---|
| 381 | <div class="fragment"><pre class="fragment"> PSK <a class="code" href="group__miscfunc.html#g441f466a2b056fe5f2b05fcd894c472f" title="Calculates the modulus, i.e. the signed reminder after division.">mod</a>(8); <span class="comment">// assume 8-PSK modulator</span> |
---|
| 382 | cvec sym = <a class="code" href="group__miscfunc.html#g441f466a2b056fe5f2b05fcd894c472f" title="Calculates the modulus, i.e. the signed reminder after division.">mod</a>.get_symbols(); |
---|
| 383 | ivec bits2sym = <a class="code" href="group__miscfunc.html#g441f466a2b056fe5f2b05fcd894c472f" title="Calculates the modulus, i.e. the signed reminder after division.">mod</a>.get_bits2symbols(); |
---|
| 384 | bvec in_bits = <span class="stringliteral">"100"</span> <span class="comment">// input bits</span> |
---|
| 385 | <span class="keywordtype">int</span> d = <a class="code" href="group__convertfunc.html#g698adf78bc0f9d36fd5987bc87d543fa" title="Convert a bvec to decimal int with the first bit as MSB if msb_first == true.">bin2dec</a>(in_bits); <span class="comment">// decimal representation of in_bits = 4</span> |
---|
| 386 | <span class="comment">// mapping of d into PSK symbol using bits2sym and sym tables</span> |
---|
| 387 | std::complex<double> out_symbol = sym(bits2sym(d)); |
---|
| 388 | </pre></div> |
---|
| 389 | </div> |
---|
| 390 | </div><p> |
---|
| 391 | <hr>The documentation for this class was generated from the following file:<ul> |
---|
| 392 | <li><a class="el" href="modulator_8h-source.html">modulator.h</a></ul> |
---|
| 393 | </div> |
---|
| 394 | <hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by |
---|
| 395 | <a href="http://www.doxygen.org/index.html"> |
---|
| 396 | <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address> |
---|
| 397 | </body> |
---|
| 398 | </html> |
---|