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::TDL_Channel Class 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_1TDL__Channel.html">TDL_Channel</a> |
---|
68 | </div> |
---|
69 | </div> |
---|
70 | <div class="contents"> |
---|
71 | <h1>itpp::TDL_Channel Class Reference<br> |
---|
72 | <small> |
---|
73 | [<a class="el" href="group__channels.html">Channel Modeling</a>]</small> |
---|
74 | </h1><!-- doxytag: class="itpp::TDL_Channel" -->Tapped Delay Line (TDL) channel model. |
---|
75 | <a href="#_details">More...</a> |
---|
76 | <p> |
---|
77 | <code>#include <<a class="el" href="channel_8h-source.html">channel.h</a>></code> |
---|
78 | <p> |
---|
79 | |
---|
80 | <p> |
---|
81 | <a href="classitpp_1_1TDL__Channel-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="6953b926d31092c1f7a1a4edf3af552f"></a><!-- doxytag: member="itpp::TDL_Channel::TDL_Channel" ref="6953b926d31092c1f7a1a4edf3af552f" args="(const vec &avg_power_dB="0", const ivec &delay_prof="0")" --> |
---|
85 | </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#6953b926d31092c1f7a1a4edf3af552f">TDL_Channel</a> (const vec &avg_power_dB="0", const ivec &delay_prof="0")</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="b6a0f1922c2b508df05bc29999cfda53"></a><!-- doxytag: member="itpp::TDL_Channel::TDL_Channel" ref="b6a0f1922c2b508df05bc29999cfda53" args="(const Channel_Specification &channel_spec, double sampling_time)" --> |
---|
89 | </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#b6a0f1922c2b508df05bc29999cfda53">TDL_Channel</a> (const <a class="el" href="classitpp_1_1Channel__Specification.html">Channel_Specification</a> &channel_spec, double sampling_time)</td></tr> |
---|
90 | |
---|
91 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor with defined <a class="el" href="classitpp_1_1Channel__Specification.html" title="General specification of a time-domain multipath channel.">Channel_Specification</a>. Delay profile will be discretized with <em>sampling_time</em> in seconds. <br></td></tr> |
---|
92 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="71a960187912ab176c7d82e0582b351c"></a><!-- doxytag: member="itpp::TDL_Channel::~TDL_Channel" ref="71a960187912ab176c7d82e0582b351c" args="()" --> |
---|
93 | virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#71a960187912ab176c7d82e0582b351c">~TDL_Channel</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="2c797d31786df97d2cb7b8ae1b99344b"></a><!-- doxytag: member="itpp::TDL_Channel::set_channel_profile" ref="2c797d31786df97d2cb7b8ae1b99344b" args="(const vec &avg_power_dB, const ivec &delay_prof)" --> |
---|
97 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#2c797d31786df97d2cb7b8ae1b99344b">set_channel_profile</a> (const vec &avg_power_dB, const ivec &delay_prof)</td></tr> |
---|
98 | |
---|
99 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set both average power profile in dB and power delay profile in samples. <br></td></tr> |
---|
100 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f05d94b37173d1bce7dc22e68b3ce4a7"></a><!-- doxytag: member="itpp::TDL_Channel::set_channel_profile_uniform" ref="f05d94b37173d1bce7dc22e68b3ce4a7" args="(int no_taps)" --> |
---|
101 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#f05d94b37173d1bce7dc22e68b3ce4a7">set_channel_profile_uniform</a> (int no_taps)</td></tr> |
---|
102 | |
---|
103 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set channel profile to uniform with <em>no_taps</em> taps. <br></td></tr> |
---|
104 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b29121e3d449fd5e8bfd9ac04ed8d88c"></a><!-- doxytag: member="itpp::TDL_Channel::set_channel_profile_exponential" ref="b29121e3d449fd5e8bfd9ac04ed8d88c" args="(int no_taps)" --> |
---|
105 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#b29121e3d449fd5e8bfd9ac04ed8d88c">set_channel_profile_exponential</a> (int no_taps)</td></tr> |
---|
106 | |
---|
107 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set channel profile to exponential with <em>no_taps</em> taps. <br></td></tr> |
---|
108 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="34f469d339b3c161f8631793e3ca5ef9"></a><!-- doxytag: member="itpp::TDL_Channel::set_channel_profile" ref="34f469d339b3c161f8631793e3ca5ef9" args="(const Channel_Specification &channel_spec, double sampling_time)" --> |
---|
109 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#34f469d339b3c161f8631793e3ca5ef9">set_channel_profile</a> (const <a class="el" href="classitpp_1_1Channel__Specification.html">Channel_Specification</a> &channel_spec, double sampling_time)</td></tr> |
---|
110 | |
---|
111 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set channel profile using <a class="el" href="classitpp_1_1Channel__Specification.html" title="General specification of a time-domain multipath channel.">Channel_Specification</a>. Delay profile will be discretized with <em>sampling_time</em> in seconds. <br></td></tr> |
---|
112 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a198abb6acca0ac337b3943e535a823"></a><!-- doxytag: member="itpp::TDL_Channel::set_correlated_method" ref="2a198abb6acca0ac337b3943e535a823" args="(CORRELATED_METHOD method)" --> |
---|
113 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#2a198abb6acca0ac337b3943e535a823">set_correlated_method</a> (<a class="el" href="group__channels.html#g0875516a69d533c89b49a43c2b1b987d">CORRELATED_METHOD</a> <a class="el" href="classitpp_1_1TDL__Channel.html#31dd874ddb75acb467ec68160e19a1b6">method</a>)</td></tr> |
---|
114 | |
---|
115 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the fading generation method to <em>method</em>. <br></td></tr> |
---|
116 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="63ffed6eafdaa7f1f197e1284f98e475"></a><!-- doxytag: member="itpp::TDL_Channel::set_fading_type" ref="63ffed6eafdaa7f1f197e1284f98e475" args="(FADING_TYPE fading_type)" --> |
---|
117 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#63ffed6eafdaa7f1f197e1284f98e475">set_fading_type</a> (<a class="el" href="group__channels.html#gf331f50064dab0a357caba2a0cb02b76">FADING_TYPE</a> <a class="el" href="classitpp_1_1TDL__Channel.html#8f3f4349e8a8a33ce5d9709779f5a405">fading_type</a>)</td></tr> |
---|
118 | |
---|
119 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set fading type to one of <em>Independent</em>, <em>Static</em> or <em>Correlated</em>. <br></td></tr> |
---|
120 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8502b1dd0dfb0d7b438087739ab3b92d"></a><!-- doxytag: member="itpp::TDL_Channel::set_norm_doppler" ref="8502b1dd0dfb0d7b438087739ab3b92d" args="(double norm_doppler)" --> |
---|
121 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#8502b1dd0dfb0d7b438087739ab3b92d">set_norm_doppler</a> (double norm_doppler)</td></tr> |
---|
122 | |
---|
123 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set normalized Doppler rate. A <em>Correlated</em> fading type will be used. <br></td></tr> |
---|
124 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4e9ef69abb97dd05a2ec406d5012dfef"></a><!-- doxytag: member="itpp::TDL_Channel::set_LOS" ref="4e9ef69abb97dd05a2ec406d5012dfef" args="(const vec &relative_power, const vec &relative_doppler="")" --> |
---|
125 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#4e9ef69abb97dd05a2ec406d5012dfef">set_LOS</a> (const vec &relative_power, const vec &relative_doppler="")</td></tr> |
---|
126 | |
---|
127 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set LOS parameters for each tap. LOS Doppler will be set to 0.7 by default. <br></td></tr> |
---|
128 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="573a0608043a5db81951bbb56e58051a"></a><!-- doxytag: member="itpp::TDL_Channel::set_LOS_power" ref="573a0608043a5db81951bbb56e58051a" args="(const vec &relative_power)" --> |
---|
129 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#573a0608043a5db81951bbb56e58051a">set_LOS_power</a> (const vec &relative_power)</td></tr> |
---|
130 | |
---|
131 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set LOS power for each tap. LOS Doppler will be set to 0.7 by default. <br></td></tr> |
---|
132 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78372f81d61551c6e9ebf9810debcad0"></a><!-- doxytag: member="itpp::TDL_Channel::set_LOS_doppler" ref="78372f81d61551c6e9ebf9810debcad0" args="(const vec &relative_doppler)" --> |
---|
133 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#78372f81d61551c6e9ebf9810debcad0">set_LOS_doppler</a> (const vec &relative_doppler)</td></tr> |
---|
134 | |
---|
135 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set LOS doppler for each tap. A <em>Correlated</em> fading type will be used. <br></td></tr> |
---|
136 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e79f49ef36b70ec9cb80f5b3cd55ca0c"></a><!-- doxytag: member="itpp::TDL_Channel::set_doppler_spectrum" ref="e79f49ef36b70ec9cb80f5b3cd55ca0c" args="(const DOPPLER_SPECTRUM *tap_spectrum)" --> |
---|
137 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#e79f49ef36b70ec9cb80f5b3cd55ca0c">set_doppler_spectrum</a> (const <a class="el" href="group__channels.html#gfd030225d513c962191cbce565337fd8">DOPPLER_SPECTRUM</a> *tap_spectrum)</td></tr> |
---|
138 | |
---|
139 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set doppler spectrum for each tap in the channel profile. <em>Rice_MEDS</em> method will be used. <br></td></tr> |
---|
140 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="798e116747b6f1c3153199f69e1103d9"></a><!-- doxytag: member="itpp::TDL_Channel::set_doppler_spectrum" ref="798e116747b6f1c3153199f69e1103d9" args="(int tap_number, DOPPLER_SPECTRUM tap_spectrum)" --> |
---|
141 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#798e116747b6f1c3153199f69e1103d9">set_doppler_spectrum</a> (int tap_number, <a class="el" href="group__channels.html#gfd030225d513c962191cbce565337fd8">DOPPLER_SPECTRUM</a> tap_spectrum)</td></tr> |
---|
142 | |
---|
143 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set doppler spectrum of tap <em>tap_number</em>. <em>Rice_MEDS</em> method will be used. <br></td></tr> |
---|
144 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5fc8901f632abc5806da9c3819d1be7d"></a><!-- doxytag: member="itpp::TDL_Channel::set_no_frequencies" ref="5fc8901f632abc5806da9c3819d1be7d" args="(int no_freq)" --> |
---|
145 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#5fc8901f632abc5806da9c3819d1be7d">set_no_frequencies</a> (int no_freq)</td></tr> |
---|
146 | |
---|
147 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set number of sine frequencies. <em>Rice_MEDS</em> method will be used. <br></td></tr> |
---|
148 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d57abed39565c38b3a990db4fc4e0837"></a><!-- doxytag: member="itpp::TDL_Channel::set_time_offset" ref="d57abed39565c38b3a990db4fc4e0837" args="(int offset)" --> |
---|
149 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#d57abed39565c38b3a990db4fc4e0837">set_time_offset</a> (int offset)</td></tr> |
---|
150 | |
---|
151 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set fading generators' time offset in samples. A <em>Correlated</em> fading type will be used. <br></td></tr> |
---|
152 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6dfe0071b9de039523307f580683ff89"></a><!-- doxytag: member="itpp::TDL_Channel::shift_time_offset" ref="6dfe0071b9de039523307f580683ff89" args="(int no_samples)" --> |
---|
153 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#6dfe0071b9de039523307f580683ff89">shift_time_offset</a> (int no_samples)</td></tr> |
---|
154 | |
---|
155 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Shift fading generators' time offset. A <em>Correlated</em> fading type will be used. <br></td></tr> |
---|
156 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a141e865d9059c954c0750f2f090a21e"></a><!-- doxytag: member="itpp::TDL_Channel::set_filter_length" ref="a141e865d9059c954c0750f2f090a21e" args="(int filter_length)" --> |
---|
157 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#a141e865d9059c954c0750f2f090a21e">set_filter_length</a> (int <a class="el" href="classitpp_1_1TDL__Channel.html#de665383426f68ba54be93be024a0842">filter_length</a>)</td></tr> |
---|
158 | |
---|
159 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set fading generator filter length. <em>FIR</em> method will be used. <br></td></tr> |
---|
160 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="172fbe5d69b75fc950af0e5a9c5c3e39"></a><!-- doxytag: member="itpp::TDL_Channel::taps" ref="172fbe5d69b75fc950af0e5a9c5c3e39" args="() const " --> |
---|
161 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#172fbe5d69b75fc950af0e5a9c5c3e39">taps</a> () const </td></tr> |
---|
162 | |
---|
163 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of channel taps. <br></td></tr> |
---|
164 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d166229e1b0bbfa31c13d9ec6ad2d8bc"></a><!-- doxytag: member="itpp::TDL_Channel::get_channel_profile" ref="d166229e1b0bbfa31c13d9ec6ad2d8bc" args="(vec &avg_power_dB, ivec &delay_prof) const " --> |
---|
165 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#d166229e1b0bbfa31c13d9ec6ad2d8bc">get_channel_profile</a> (vec &avg_power_dB, ivec &delay_prof) const </td></tr> |
---|
166 | |
---|
167 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get both average power profile in dB and power delay profile in samples. <br></td></tr> |
---|
168 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ff9a7d23df369d4da63ad1aa6712b875"></a><!-- doxytag: member="itpp::TDL_Channel::get_avg_power_dB" ref="ff9a7d23df369d4da63ad1aa6712b875" args="() const " --> |
---|
169 | vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#ff9a7d23df369d4da63ad1aa6712b875">get_avg_power_dB</a> () const </td></tr> |
---|
170 | |
---|
171 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Return power profile in dB. <br></td></tr> |
---|
172 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9f43d8a1cf923b1713b36106c099e5fb"></a><!-- doxytag: member="itpp::TDL_Channel::get_delay_prof" ref="9f43d8a1cf923b1713b36106c099e5fb" args="() const " --> |
---|
173 | ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#9f43d8a1cf923b1713b36106c099e5fb">get_delay_prof</a> () const </td></tr> |
---|
174 | |
---|
175 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Return delay profile in samples. <br></td></tr> |
---|
176 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="33f676f0c4640645bab67fb26249fded"></a><!-- doxytag: member="itpp::TDL_Channel::get_correlated_method" ref="33f676f0c4640645bab67fb26249fded" args="() const " --> |
---|
177 | <a class="el" href="group__channels.html#g0875516a69d533c89b49a43c2b1b987d">CORRELATED_METHOD</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#33f676f0c4640645bab67fb26249fded">get_correlated_method</a> () const </td></tr> |
---|
178 | |
---|
179 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Return fading generation method. <br></td></tr> |
---|
180 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d0b9943f587231c159063f59f4a1cdeb"></a><!-- doxytag: member="itpp::TDL_Channel::get_fading_type" ref="d0b9943f587231c159063f59f4a1cdeb" args="() const " --> |
---|
181 | <a class="el" href="group__channels.html#gf331f50064dab0a357caba2a0cb02b76">FADING_TYPE</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#d0b9943f587231c159063f59f4a1cdeb">get_fading_type</a> () const </td></tr> |
---|
182 | |
---|
183 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Return fading type. <br></td></tr> |
---|
184 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6cda5bb12b28b7628fe5f44555d25457"></a><!-- doxytag: member="itpp::TDL_Channel::get_norm_doppler" ref="6cda5bb12b28b7628fe5f44555d25457" args="() const " --> |
---|
185 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#6cda5bb12b28b7628fe5f44555d25457">get_norm_doppler</a> () const </td></tr> |
---|
186 | |
---|
187 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Return normalized doppler rate. <br></td></tr> |
---|
188 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="534ebadba2ad8e8658e1fe23a234cc38"></a><!-- doxytag: member="itpp::TDL_Channel::get_LOS_power" ref="534ebadba2ad8e8658e1fe23a234cc38" args="() const " --> |
---|
189 | vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#534ebadba2ad8e8658e1fe23a234cc38">get_LOS_power</a> () const </td></tr> |
---|
190 | |
---|
191 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get relative power (Rice factor) for each tap. <br></td></tr> |
---|
192 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c7ea04399928b644d9d16a7fd35a1d20"></a><!-- doxytag: member="itpp::TDL_Channel::get_LOS_doppler" ref="c7ea04399928b644d9d16a7fd35a1d20" args="() const " --> |
---|
193 | vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#c7ea04399928b644d9d16a7fd35a1d20">get_LOS_doppler</a> () const </td></tr> |
---|
194 | |
---|
195 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get relative Doppler (to the maximum Doppler) for each tap. <br></td></tr> |
---|
196 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2d62a3bb11ad2aa42b0386f4c9b8fb7"></a><!-- doxytag: member="itpp::TDL_Channel::get_LOS_power" ref="b2d62a3bb11ad2aa42b0386f4c9b8fb7" args="(int tap_number) const " --> |
---|
197 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#b2d62a3bb11ad2aa42b0386f4c9b8fb7">get_LOS_power</a> (int tap_number) const </td></tr> |
---|
198 | |
---|
199 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get relative power (Rice factor) for tap <em>tap_number</em>. <br></td></tr> |
---|
200 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="beb2f3bc95cc083c809e470502dc4224"></a><!-- doxytag: member="itpp::TDL_Channel::get_LOS_doppler" ref="beb2f3bc95cc083c809e470502dc4224" args="(int tap_number) const " --> |
---|
201 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#beb2f3bc95cc083c809e470502dc4224">get_LOS_doppler</a> (int tap_number) const </td></tr> |
---|
202 | |
---|
203 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get relative Doppler (to the maximum Doppler) for tap <em>tap_number</em>. <br></td></tr> |
---|
204 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e3465144be99bfd8878206307c8bba95"></a><!-- doxytag: member="itpp::TDL_Channel::get_no_frequencies" ref="e3465144be99bfd8878206307c8bba95" args="() const " --> |
---|
205 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#e3465144be99bfd8878206307c8bba95">get_no_frequencies</a> () const </td></tr> |
---|
206 | |
---|
207 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the minimum number of frequencies used in Rice MEDS fading generator. <br></td></tr> |
---|
208 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f9847cf5ec7f8f2d4a75292bb0c98610"></a><!-- doxytag: member="itpp::TDL_Channel::get_time_offset" ref="f9847cf5ec7f8f2d4a75292bb0c98610" args="() const " --> |
---|
209 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#f9847cf5ec7f8f2d4a75292bb0c98610">get_time_offset</a> () const </td></tr> |
---|
210 | |
---|
211 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get fading generators' time ofset. <br></td></tr> |
---|
212 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="25709163fd22c7e53b0501443f16bfd2"></a><!-- doxytag: member="itpp::TDL_Channel::calc_mean_excess_delay" ref="25709163fd22c7e53b0501443f16bfd2" args="() const " --> |
---|
213 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#25709163fd22c7e53b0501443f16bfd2">calc_mean_excess_delay</a> () const </td></tr> |
---|
214 | |
---|
215 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate mean excess delay in samples. <br></td></tr> |
---|
216 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="31ea52da06cbc07b3958356bce3b1baa"></a><!-- doxytag: member="itpp::TDL_Channel::calc_rms_delay_spread" ref="31ea52da06cbc07b3958356bce3b1baa" args="() const " --> |
---|
217 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#31ea52da06cbc07b3958356bce3b1baa">calc_rms_delay_spread</a> () const </td></tr> |
---|
218 | |
---|
219 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate RMS delay spread in samples. <br></td></tr> |
---|
220 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2e70204dcf3fbd26ca9911575a4aa858"></a><!-- doxytag: member="itpp::TDL_Channel::init" ref="2e70204dcf3fbd26ca9911575a4aa858" args="()" --> |
---|
221 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#2e70204dcf3fbd26ca9911575a4aa858">init</a> ()</td></tr> |
---|
222 | |
---|
223 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize all fading generators. Automatically invoked in <a class="el" href="classitpp_1_1TDL__Channel.html#e8892db45e45f63c1fd228baf94b0222" title="Generate no_samples values of the channel.">generate()</a> or <a class="el" href="classitpp_1_1TDL__Channel.html#fa6ec93d1d4911a9a4b9550977db4d02" title="Generate channel coefficients and filter the input. Return output and channel coefficients...">filter()</a> functions. <br></td></tr> |
---|
224 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8892db45e45f63c1fd228baf94b0222"></a><!-- doxytag: member="itpp::TDL_Channel::generate" ref="e8892db45e45f63c1fd228baf94b0222" args="(int no_samples, Array< cvec > &channel_coeff)" --> |
---|
225 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#e8892db45e45f63c1fd228baf94b0222">generate</a> (int no_samples, <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &channel_coeff)</td></tr> |
---|
226 | |
---|
227 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate <em>no_samples</em> values of the channel. <br></td></tr> |
---|
228 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="80440b5b7bd01cbf8a1c647bb0104944"></a><!-- doxytag: member="itpp::TDL_Channel::generate" ref="80440b5b7bd01cbf8a1c647bb0104944" args="(int no_samples, cmat &channel_coeff)" --> |
---|
229 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#80440b5b7bd01cbf8a1c647bb0104944">generate</a> (int no_samples, cmat &channel_coeff)</td></tr> |
---|
230 | |
---|
231 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate <em>no_samples</em> values of the channel. Returns the matrix with one tap per column. <br></td></tr> |
---|
232 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5321f2eef7983f8847b1c99d3807616d"></a><!-- doxytag: member="itpp::TDL_Channel::filter_known_channel" ref="5321f2eef7983f8847b1c99d3807616d" args="(const cvec &input, cvec &output, const Array< cvec > &channel_coeff)" --> |
---|
233 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#5321f2eef7983f8847b1c99d3807616d">filter_known_channel</a> (const cvec &input, cvec &output, const <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &channel_coeff)</td></tr> |
---|
234 | |
---|
235 | <tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classitpp_1_1Filter.html" title="Virtual Filter Base Class.The class is templated as follows:.">Filter</a> the <em>input</em> with the known channel values <em>channel_coeff</em> (e.g. from the generate function). <br></td></tr> |
---|
236 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e32dc8b6979fbf916a1e25574b095bc2"></a><!-- doxytag: member="itpp::TDL_Channel::filter_known_channel" ref="e32dc8b6979fbf916a1e25574b095bc2" args="(const cvec &input, cvec &output, const cmat &channel_coeff)" --> |
---|
237 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#e32dc8b6979fbf916a1e25574b095bc2">filter_known_channel</a> (const cvec &input, cvec &output, const cmat &channel_coeff)</td></tr> |
---|
238 | |
---|
239 | <tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classitpp_1_1Filter.html" title="Virtual Filter Base Class.The class is templated as follows:.">Filter</a> the <em>input</em> with the known channel values <em>channel_coeff</em> (e.g. from the generate function). <br></td></tr> |
---|
240 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fa6ec93d1d4911a9a4b9550977db4d02"></a><!-- doxytag: member="itpp::TDL_Channel::filter" ref="fa6ec93d1d4911a9a4b9550977db4d02" args="(const cvec &input, cvec &output, Array< cvec > &channel_coeff)" --> |
---|
241 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#fa6ec93d1d4911a9a4b9550977db4d02">filter</a> (const cvec &input, cvec &output, <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &channel_coeff)</td></tr> |
---|
242 | |
---|
243 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Return output and channel coefficients. <br></td></tr> |
---|
244 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="509b7dbb8153fac66e03ad31338d2dd4"></a><!-- doxytag: member="itpp::TDL_Channel::filter" ref="509b7dbb8153fac66e03ad31338d2dd4" args="(const cvec &input, cvec &output, cmat &channel_coeff)" --> |
---|
245 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#509b7dbb8153fac66e03ad31338d2dd4">filter</a> (const cvec &input, cvec &output, cmat &channel_coeff)</td></tr> |
---|
246 | |
---|
247 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Return output and channel coefficients. <br></td></tr> |
---|
248 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="239193990dc0c74269c1ba2643421c65"></a><!-- doxytag: member="itpp::TDL_Channel::filter" ref="239193990dc0c74269c1ba2643421c65" args="(const cvec &input, Array< cvec > &channel_coeff)" --> |
---|
249 | cvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#239193990dc0c74269c1ba2643421c65">filter</a> (const cvec &input, <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &channel_coeff)</td></tr> |
---|
250 | |
---|
251 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Return output and channel coefficients. <br></td></tr> |
---|
252 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e3dd95efc5ffbe7729e6c93e87820739"></a><!-- doxytag: member="itpp::TDL_Channel::filter" ref="e3dd95efc5ffbe7729e6c93e87820739" args="(const cvec &input, cmat &channel_coeff)" --> |
---|
253 | cvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#e3dd95efc5ffbe7729e6c93e87820739">filter</a> (const cvec &input, cmat &channel_coeff)</td></tr> |
---|
254 | |
---|
255 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Return output and channel coefficients. <br></td></tr> |
---|
256 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="387feb7265c3954489c32d506b7acbd6"></a><!-- doxytag: member="itpp::TDL_Channel::filter" ref="387feb7265c3954489c32d506b7acbd6" args="(const cvec &input, cvec &output)" --> |
---|
257 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#387feb7265c3954489c32d506b7acbd6">filter</a> (const cvec &input, cvec &output)</td></tr> |
---|
258 | |
---|
259 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Only return the output. <br></td></tr> |
---|
260 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="10cdb64bc00f2f221d734c9337280fdd"></a><!-- doxytag: member="itpp::TDL_Channel::filter" ref="10cdb64bc00f2f221d734c9337280fdd" args="(const cvec &input)" --> |
---|
261 | cvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#10cdb64bc00f2f221d734c9337280fdd">filter</a> (const cvec &input)</td></tr> |
---|
262 | |
---|
263 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Only return output. <br></td></tr> |
---|
264 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f179218475c2fbd7bbaf7eb80fbf7db8"></a><!-- doxytag: member="itpp::TDL_Channel::operator()" ref="f179218475c2fbd7bbaf7eb80fbf7db8" args="(const cvec &input, cvec &output, Array< cvec > &channel_coeff)" --> |
---|
265 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#f179218475c2fbd7bbaf7eb80fbf7db8">operator()</a> (const cvec &input, cvec &output, <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &channel_coeff)</td></tr> |
---|
266 | |
---|
267 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Return output and channel coefficients. <br></td></tr> |
---|
268 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7a2ec75d001959f6924cf13f5cc5cfb9"></a><!-- doxytag: member="itpp::TDL_Channel::operator()" ref="7a2ec75d001959f6924cf13f5cc5cfb9" args="(const cvec &input, cvec &output, cmat &channel_coeff)" --> |
---|
269 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#7a2ec75d001959f6924cf13f5cc5cfb9">operator()</a> (const cvec &input, cvec &output, cmat &channel_coeff)</td></tr> |
---|
270 | |
---|
271 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Return output and channel coefficients. <br></td></tr> |
---|
272 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="93e4cefd0f2f7b30fbf2a8d76bae3722"></a><!-- doxytag: member="itpp::TDL_Channel::operator()" ref="93e4cefd0f2f7b30fbf2a8d76bae3722" args="(const cvec &input, Array< cvec > &channel_coeff)" --> |
---|
273 | cvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#93e4cefd0f2f7b30fbf2a8d76bae3722">operator()</a> (const cvec &input, <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &channel_coeff)</td></tr> |
---|
274 | |
---|
275 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Return output and channel coefficients. <br></td></tr> |
---|
276 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="22087247345c2c0d88c63d1ef2f74ba0"></a><!-- doxytag: member="itpp::TDL_Channel::operator()" ref="22087247345c2c0d88c63d1ef2f74ba0" args="(const cvec &input, cmat &channel_coeff)" --> |
---|
277 | cvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#22087247345c2c0d88c63d1ef2f74ba0">operator()</a> (const cvec &input, cmat &channel_coeff)</td></tr> |
---|
278 | |
---|
279 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Return output and channel coefficients. <br></td></tr> |
---|
280 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5267cafe7c22fd1a01fdfc29600e0155"></a><!-- doxytag: member="itpp::TDL_Channel::operator()" ref="5267cafe7c22fd1a01fdfc29600e0155" args="(const cvec &input)" --> |
---|
281 | cvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#5267cafe7c22fd1a01fdfc29600e0155">operator()</a> (const cvec &input)</td></tr> |
---|
282 | |
---|
283 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate channel coefficients and filter the <em>input</em>. Only return output. <br></td></tr> |
---|
284 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ffd14db9b6d865d8e5f0ad24f04055fc"></a><!-- doxytag: member="itpp::TDL_Channel::calc_impulse_response" ref="ffd14db9b6d865d8e5f0ad24f04055fc" args="(const Array< cvec > &channel_coeff, Array< cvec > &impulse_response)" --> |
---|
285 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#ffd14db9b6d865d8e5f0ad24f04055fc">calc_impulse_response</a> (const <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &channel_coeff, <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &impulse_response)</td></tr> |
---|
286 | |
---|
287 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate impulse-response on the supplied channel coefficients (produced by the <a class="el" href="classitpp_1_1TDL__Channel.html#e8892db45e45f63c1fd228baf94b0222" title="Generate no_samples values of the channel.">generate()</a> function). <br></td></tr> |
---|
288 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="30e70291ca0531eac4c5114316b66de3"></a><!-- doxytag: member="itpp::TDL_Channel::calc_frequency_response" ref="30e70291ca0531eac4c5114316b66de3" args="(const Array< cvec > &channel_coeff, Array< cvec > &frequency_response, const int fft_size)" --> |
---|
289 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#30e70291ca0531eac4c5114316b66de3">calc_frequency_response</a> (const <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &channel_coeff, <a class="el" href="classitpp_1_1Array.html">Array</a>< cvec > &frequency_response, const int fft_size)</td></tr> |
---|
290 | |
---|
291 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate frequency-response on the supplied channel coefficients (produced by the <a class="el" href="classitpp_1_1TDL__Channel.html#e8892db45e45f63c1fd228baf94b0222" title="Generate no_samples values of the channel.">generate()</a> function). <br></td></tr> |
---|
292 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6b11207b34f781611d48956dfe36fb6"></a><!-- doxytag: member="itpp::TDL_Channel::calc_frequency_response" ref="a6b11207b34f781611d48956dfe36fb6" args="(const cmat &channel_coeff, cmat &frequency_response, const int fft_size)" --> |
---|
293 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#a6b11207b34f781611d48956dfe36fb6">calc_frequency_response</a> (const cmat &channel_coeff, cmat &frequency_response, const int fft_size)</td></tr> |
---|
294 | |
---|
295 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate frequency-response on the supplied channel coefficients (produced by the <a class="el" href="classitpp_1_1TDL__Channel.html#e8892db45e45f63c1fd228baf94b0222" title="Generate no_samples values of the channel.">generate()</a> function). <br></td></tr> |
---|
296 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="316d132618499ce152a6a42bb8003228"></a><!-- doxytag: member="itpp::TDL_Channel::get_sampling_time" ref="316d132618499ce152a6a42bb8003228" args="() const " --> |
---|
297 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#316d132618499ce152a6a42bb8003228">get_sampling_time</a> () const </td></tr> |
---|
298 | |
---|
299 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Return channel sampling time (used for discretization). <br></td></tr> |
---|
300 | <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> |
---|
301 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#36c0e2b1342e7260055918bc40f90b70">discretize</a> (const vec &delay_profile)</td></tr> |
---|
302 | |
---|
303 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Discretize the delay profile with <em>discrete_Ts</em> (Ts). All taps within ((i-0.5)Ts,(i+0.5)Ts] belong to the ith discrete tap. <a href="#36c0e2b1342e7260055918bc40f90b70"></a><br></td></tr> |
---|
304 | <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> |
---|
305 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="797720174bd4b07089f09fff05243d85"></a><!-- doxytag: member="itpp::TDL_Channel::init_flag" ref="797720174bd4b07089f09fff05243d85" args="" --> |
---|
306 | bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#797720174bd4b07089f09fff05243d85">init_flag</a></td></tr> |
---|
307 | |
---|
308 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Channel ready to produce data. <br></td></tr> |
---|
309 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="111d9ae12862a69fcf0f1ad388d1b4bf"></a><!-- doxytag: member="itpp::TDL_Channel::a_prof" ref="111d9ae12862a69fcf0f1ad388d1b4bf" args="" --> |
---|
310 | vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#111d9ae12862a69fcf0f1ad388d1b4bf">a_prof</a></td></tr> |
---|
311 | |
---|
312 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Average amplitude of each tap. <br></td></tr> |
---|
313 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8403c04165821ec65d6ac0a4d6a39b6d"></a><!-- doxytag: member="itpp::TDL_Channel::d_prof" ref="8403c04165821ec65d6ac0a4d6a39b6d" args="" --> |
---|
314 | ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#8403c04165821ec65d6ac0a4d6a39b6d">d_prof</a></td></tr> |
---|
315 | |
---|
316 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Delay in samples for each tap. <br></td></tr> |
---|
317 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="59a3fbbe5581d4b59efa2e0592bc8db0"></a><!-- doxytag: member="itpp::TDL_Channel::los_power" ref="59a3fbbe5581d4b59efa2e0592bc8db0" args="" --> |
---|
318 | vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#59a3fbbe5581d4b59efa2e0592bc8db0">los_power</a></td></tr> |
---|
319 | |
---|
320 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Relative power for each Rice component. <br></td></tr> |
---|
321 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c2c2867660d28071ac8bcfdcdacda02a"></a><!-- doxytag: member="itpp::TDL_Channel::los_dopp" ref="c2c2867660d28071ac8bcfdcdacda02a" args="" --> |
---|
322 | vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#c2c2867660d28071ac8bcfdcdacda02a">los_dopp</a></td></tr> |
---|
323 | |
---|
324 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Relative LOS Doppler for each Rice component. <br></td></tr> |
---|
325 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="414b894875b8ee8f2d2f849e992d9257"></a><!-- doxytag: member="itpp::TDL_Channel::N_taps" ref="414b894875b8ee8f2d2f849e992d9257" args="" --> |
---|
326 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#414b894875b8ee8f2d2f849e992d9257">N_taps</a></td></tr> |
---|
327 | |
---|
328 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of taps. <br></td></tr> |
---|
329 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3b243e032ecbb40b1418b6a2b6d9e451"></a><!-- doxytag: member="itpp::TDL_Channel::n_dopp" ref="3b243e032ecbb40b1418b6a2b6d9e451" args="" --> |
---|
330 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#3b243e032ecbb40b1418b6a2b6d9e451">n_dopp</a></td></tr> |
---|
331 | |
---|
332 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Normalized Doppler of the correlated fading. <br></td></tr> |
---|
333 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f3f4349e8a8a33ce5d9709779f5a405"></a><!-- doxytag: member="itpp::TDL_Channel::fading_type" ref="8f3f4349e8a8a33ce5d9709779f5a405" args="" --> |
---|
334 | <a class="el" href="group__channels.html#gf331f50064dab0a357caba2a0cb02b76">FADING_TYPE</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#8f3f4349e8a8a33ce5d9709779f5a405">fading_type</a></td></tr> |
---|
335 | |
---|
336 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Fading type: Independent (default), Static or Correlated. <br></td></tr> |
---|
337 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="31dd874ddb75acb467ec68160e19a1b6"></a><!-- doxytag: member="itpp::TDL_Channel::method" ref="31dd874ddb75acb467ec68160e19a1b6" args="" --> |
---|
338 | <a class="el" href="group__channels.html#g0875516a69d533c89b49a43c2b1b987d">CORRELATED_METHOD</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#31dd874ddb75acb467ec68160e19a1b6">method</a></td></tr> |
---|
339 | |
---|
340 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Correlated fading generation method: Rice_MEDS (default), IFFT or FIR. <br></td></tr> |
---|
341 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="325c4b7315bfdb61fb4cc35994539e91"></a><!-- doxytag: member="itpp::TDL_Channel::tap_doppler_spectrum" ref="325c4b7315bfdb61fb4cc35994539e91" args="" --> |
---|
342 | <a class="el" href="classitpp_1_1Array.html">Array</a>< <a class="el" href="group__channels.html#gfd030225d513c962191cbce565337fd8">DOPPLER_SPECTRUM</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#325c4b7315bfdb61fb4cc35994539e91">tap_doppler_spectrum</a></td></tr> |
---|
343 | |
---|
344 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Doppler spectrum for each tap. <br></td></tr> |
---|
345 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b4b33014df2202a54ddd80d55b455c07"></a><!-- doxytag: member="itpp::TDL_Channel::fading_gen" ref="b4b33014df2202a54ddd80d55b455c07" args="" --> |
---|
346 | <a class="el" href="classitpp_1_1Array.html">Array</a>< <a class="el" href="classitpp_1_1Fading__Generator.html">Fading_Generator</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#b4b33014df2202a54ddd80d55b455c07">fading_gen</a></td></tr> |
---|
347 | |
---|
348 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Fading generators for each tap. <br></td></tr> |
---|
349 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="de665383426f68ba54be93be024a0842"></a><!-- doxytag: member="itpp::TDL_Channel::filter_length" ref="de665383426f68ba54be93be024a0842" args="" --> |
---|
350 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#de665383426f68ba54be93be024a0842">filter_length</a></td></tr> |
---|
351 | |
---|
352 | <tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classitpp_1_1Filter.html" title="Virtual Filter Base Class.The class is templated as follows:.">Filter</a> length of FIR fading generator. <br></td></tr> |
---|
353 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a62f9f49797ee458af8fe71f7e2ad752"></a><!-- doxytag: member="itpp::TDL_Channel::nrof_freq" ref="a62f9f49797ee458af8fe71f7e2ad752" args="" --> |
---|
354 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#a62f9f49797ee458af8fe71f7e2ad752">nrof_freq</a></td></tr> |
---|
355 | |
---|
356 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of sine frequencies in the Rice MEDS fading generator. <br></td></tr> |
---|
357 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c38f959613ae41b79b8cdd1ab587df43"></a><!-- doxytag: member="itpp::TDL_Channel::discrete_Ts" ref="c38f959613ae41b79b8cdd1ab587df43" args="" --> |
---|
358 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TDL__Channel.html#c38f959613ae41b79b8cdd1ab587df43">discrete_Ts</a></td></tr> |
---|
359 | |
---|
360 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Sampling time of discretization. <br></td></tr> |
---|
361 | </table> |
---|
362 | <hr><a name="_details"></a><h2>Detailed Description</h2> |
---|
363 | Tapped Delay Line (TDL) channel model. |
---|
364 | <p> |
---|
365 | <dl class="author" compact><dt><b>Author:</b></dt><dd>Tony Ottosson, Adam Piatyszek and Zbigniew Dlugaszewski</dd></dl> |
---|
366 | A time invariant (or at least wide-sense stationary) channel have an impulse response that can be modeled as:<p> |
---|
367 | <p class="formulaDsp"> |
---|
368 | <img class="formulaDsp" alt="\[ h(t) = \sum_{k=0}^{N_\mathrm{taps}-1} a_k \exp (-j \theta_k ) \delta(t-\tau_k), \]" src="form_202.png"> |
---|
369 | <p> |
---|
370 | <p> |
---|
371 | where <img class="formulaInl" alt="$ N_{taps} $" src="form_229.png"> is the number of channel taps, <img class="formulaInl" alt="$ a_k $" src="form_204.png"> is the average amplitude at delay <img class="formulaInl" alt="$ \tau_k $" src="form_205.png">, and <img class="formulaInl" alt="$ \theta_k $" src="form_206.png"> is the channel phase of the <img class="formulaInl" alt="$ k^{th} $" src="form_207.png"> channel tap. The average power profile, and delay profile are defined as:<p> |
---|
372 | <p class="formulaDsp"> |
---|
373 | <img class="formulaDsp" alt="\[ \mathbf{a} = [a_0, a_1, \ldots, a_{N_\mathrm{taps}-1}] \]" src="form_208.png"> |
---|
374 | <p> |
---|
375 | <p> |
---|
376 | and<p> |
---|
377 | <p class="formulaDsp"> |
---|
378 | <img class="formulaDsp" alt="\[ \mathbf{\tau} = [\tau_0, \tau_1, \ldots, \tau_{N_\mathrm{taps}-1}], \]" src="form_209.png"> |
---|
379 | <p> |
---|
380 | <p> |
---|
381 | respectively. We assume without loss of generality that <img class="formulaInl" alt="$ \tau_0 = 0 $" src="form_210.png"> and <img class="formulaInl" alt="$ \tau_0 < \tau_1 < \ldots < \tau_{N_\mathrm{taps}-1} $" src="form_211.png">.<p> |
---|
382 | To initialize the channel profile the following parameters should be defined:<ul> |
---|
383 | <li><em>avg_power_dB</em> Average power profile <img class="formulaInl" alt="$ \mathbf{a} $" src="form_230.png">, given in dB</li><li><em>delay_profile</em> Delay profile <img class="formulaInl" alt="$ \mathbf{\tau} $" src="form_231.png">, given in samples. The delay profile should be sorted (increasing delay) and the first delay has to be 0.</li></ul> |
---|
384 | <p> |
---|
385 | In the case of correlated channel, the correlation in time is decided by the normalized Doppler frequency and Doppler spectrum. The normalized Doppler frequency is calculated as <img class="formulaInl" alt="$ f_\mathrm{max} T_s $" src="form_199.png">, where <img class="formulaInl" alt="$ f_\mathrm{max} $" src="form_195.png"> is the maximum Doppler frequency and <img class="formulaInl" alt="$ T_s $" src="form_200.png"> is the sample duration.<p> |
---|
386 | Two main types of generation methods exist: the filter method and Rice method. In the filter method the correlated fading process is generated with a filtering of the complex Gaussian process to achieve a given Doppler spectrum (<em>Jakes</em> by default). Currently there are two filter implementations:<ul> |
---|
387 | <li><em>FIR</em> - Finite Impulse Response (FIR) filter. Rather slow and inaccurate. Use with care.</li><li><em>IFFT</em> - Blockwise filtering in the frequency-domain. Consecutive blocks have independent fading. Very efficient method for large blocks.</li></ul> |
---|
388 | <p> |
---|
389 | The preferred method for generating the correlated fading process is the <em>Rice</em> method that approximate the fading process as a sum of sinusoids. Currently there is only one implementation, the Rice Method of Exact Doppler Spread (<em>Rice_MEDS</em>), which is also the default choice.<p> |
---|
390 | To summarize, the currently supported correlated fading generation methods are:<ul> |
---|
391 | <li><em>FIR</em> - filter FIR method</li><li><em>IFFT</em> - filter IFFT method</li><li><em>Rice_MEDS</em> - sum of sine waves MEDS method</li></ul> |
---|
392 | <p> |
---|
393 | Beside the above described correlated methods, two additional fading generators exists: the <em><a class="el" href="classitpp_1_1Independent__Fading__Generator.html" title="Independent (random) fading generator class.">Independent_Fading_Generator</a></em> and <em><a class="el" href="classitpp_1_1Static__Fading__Generator.html" title="Static fading generator class.">Static_Fading_Generator</a></em> ones. Their names are self-explanatory. The only optional parameter of these two generators is a <em>relative_power</em> of the LOS component.<p> |
---|
394 | Example: Simulation of WCDMA <div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <<a class="code" href="itcomm_8h.html" title="Include file for the IT++ communications module.">itpp/itcomm.h</a>></span> |
---|
395 | <span class="keyword">using namespace </span>itpp; |
---|
396 | |
---|
397 | <span class="keywordtype">int</span> main() { |
---|
398 | <span class="comment">// set sampling time at a half of chip rate (0.5 / 3.84e6)</span> |
---|
399 | <span class="keywordtype">double</span> Ts = 130.2e-9; |
---|
400 | <span class="comment">// select the COST259 Rural Area model</span> |
---|
401 | Channel_Specification channel_spec(COST259_RAx); |
---|
402 | <span class="comment">// initialize with the predefined channel profile</span> |
---|
403 | <a class="code" href="classitpp_1_1TDL__Channel.html#6953b926d31092c1f7a1a4edf3af552f" title="Default constructor.">TDL_Channel</a> channel(channel_spec, Ts); |
---|
404 | <span class="comment">// set the normalized Doppler; fading type will be set to Correlated</span> |
---|
405 | <span class="comment">// and Rice_MEDS method will be used (default settings)</span> |
---|
406 | channel.set_norm_doppler(0.01); |
---|
407 | |
---|
408 | cvec transmitted_signal; |
---|
409 | <span class="comment">// -----------------------------------------------</span> |
---|
410 | <span class="comment">// Your code here generates the transmitted signal</span> |
---|
411 | <span class="comment">// -----------------------------------------------</span> |
---|
412 | |
---|
413 | <span class="comment">// Channel coefficients are returned in the 'coeff' array of complex values</span> |
---|
414 | Array<cvec> coeff; |
---|
415 | cvec received_signal = channel(transmitted_signal, coeff); |
---|
416 | } |
---|
417 | </pre></div><p> |
---|
418 | References:<ul> |
---|
419 | <li>[Pat02] Matthias Patzold, Mobile fading channels, Wiley, 2002.</li><li>[Stu01] Gordon L. Stuber, Principles of mobile communication, 2nd. ed., Kluwer, 2001.</li><li>[Rap96] Theodore S. Rappaport, Wireless communications: principles and practise, Prentice Hall, 1996. </li></ul> |
---|
420 | <hr><h2>Member Function Documentation</h2> |
---|
421 | <a class="anchor" name="36c0e2b1342e7260055918bc40f90b70"></a><!-- doxytag: member="itpp::TDL_Channel::discretize" ref="36c0e2b1342e7260055918bc40f90b70" args="(const vec &delay_profile)" --> |
---|
422 | <div class="memitem"> |
---|
423 | <div class="memproto"> |
---|
424 | <table class="memname"> |
---|
425 | <tr> |
---|
426 | <td class="memname">void itpp::TDL_Channel::discretize </td> |
---|
427 | <td>(</td> |
---|
428 | <td class="paramtype">const vec & </td> |
---|
429 | <td class="paramname"> <em>delay_profile</em> </td> |
---|
430 | <td> ) </td> |
---|
431 | <td><code> [protected]</code></td> |
---|
432 | </tr> |
---|
433 | </table> |
---|
434 | </div> |
---|
435 | <div class="memdoc"> |
---|
436 | |
---|
437 | <p> |
---|
438 | Discretize the delay profile with <em>discrete_Ts</em> (Ts). All taps within ((i-0.5)Ts,(i+0.5)Ts] belong to the ith discrete tap. |
---|
439 | <p> |
---|
440 | <dl compact><dt><b>Parameters:</b></dt><dd> |
---|
441 | <table border="0" cellspacing="2" cellpadding="0"> |
---|
442 | <tr><td valign="top"></td><td valign="top"><em>delay_profile</em> </td><td>Delay profile in seconds. </td></tr> |
---|
443 | </table> |
---|
444 | </dl> |
---|
445 | |
---|
446 | <p>References <a class="el" href="channel_8h-source.html#l00960">a_prof</a>, <a class="el" href="channel_8h-source.html#l00961">d_prof</a>, <a class="el" href="channel_8h-source.html#l00972">discrete_Ts</a>, <a class="el" href="itassert_8h-source.html#l00094">it_assert</a>, <a class="el" href="itassert_8h-source.html#l00173">it_warning</a>, <a class="el" href="channel_8h-source.html#l00963">los_dopp</a>, <a class="el" href="channel_8h-source.html#l00962">los_power</a>, <a class="el" href="channel_8h-source.html#l00964">N_taps</a>, <a class="el" href="group__convertfunc.html#gfba861d94f7752f6dfafcdf14b336ca5">itpp::round_i()</a>, <a class="el" href="array_8h-source.html#l00257">itpp::Array< T >::set_size()</a>, <a class="el" href="array_8h-source.html#l00155">itpp::Array< T >::size()</a>, <a class="el" href="elem__math_8h-source.html#l00056">itpp::sqr()</a>, <a class="el" href="elem__math_8h-source.html#l00126">itpp::sqrt()</a>, and <a class="el" href="channel_8h-source.html#l00968">tap_doppler_spectrum</a>.</p> |
---|
447 | |
---|
448 | <p>Referenced by <a class="el" href="channel_8cpp-source.html#l00942">set_channel_profile()</a>.</p> |
---|
449 | |
---|
450 | </div> |
---|
451 | </div><p> |
---|
452 | <hr>The documentation for this class was generated from the following files:<ul> |
---|
453 | <li><a class="el" href="channel_8h-source.html">channel.h</a><li><a class="el" href="channel_8cpp.html">channel.cpp</a></ul> |
---|
454 | </div> |
---|
455 | <hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by |
---|
456 | <a href="http://www.doxygen.org/index.html"> |
---|
457 | <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address> |
---|
458 | </body> |
---|
459 | </html> |
---|