This file collects questions that have been asked around the simulation of the MIMO systems in this mimolib library.
Q: Could you tell me in which file we can alter the spacing of the antenna elements?
A: Changing the spacing of the antenna elements involves the following places:
1. Write a new class derived from mimo::AntennaArray (e.g. MyArray), just like e.g. mimo::UniformCircularLambdaHalf defined at the bottom of mimolib/src/mimo-channel.h . You can reimplement only the get_phase() function which is used by the default get_steeringVector(), or you can also reimplement get_steeringVector().
2. Add a new possible value to the property "array_geometry" of the channel classes. This is done in src/mimo-channel.cpp line 100 -- you see the definition of the property with this name, and the possible values are defined in the const char array "enum_a" right in front of that. Just add a new value there. (Don't forget to have a trailing 0 (zero) as the last value of the array).
3. For the mimo::WSSUSChannel, add code that will use your new MyArray class instead of one of the others, depending on the property "array_geometry". This means in src/wssuschannel.cpp line 96 you have to add another else-if-clause.
4. Then (after make install) run your simulation, and change the entry "array_geometry" in the parameter file to your newly created value, just as you like.
Q: What changes are necessary to include the effects of antenna coupling?
A: There is a "quick & dirty" implementation of antenna coupling in the class mimo::WSSUSChannel but not in mimo::MaxEntropyChannel.
It is a not-very-sophisticated modelling of antenna coupling: The H matrix is multiplied with tri-diagonal matrix C_r from the left and C_t from the right, where the next-to-diagonal elements are the real value alpha and the diagonal elements are the real value (1-alpha) (multiplied by an additional scaling factor so that the norm of H is unchanged). In particular, this matrix C_r (and C_t) does *not* include any phase shifts -- instead, it multiplies only with real values, i.e. the amplitudes are all coupled with phase shift zero.
To try this on your own: Add the entry
antenna_coupling_ampl: 0.1 // or whatever value
with a nonzero value to the parameter file in the section concerning the channel block. The definition of this property can be found in mimo-channel.cpp:180. The implementation of this matrix model can be found in wssuschannel.cpp:792 through 829. Note that this value is directly used as this real scalar alpha mentioned above. The values in a presentation were: -20dB = 0.1; -15dB = 0.179; -10dB = 0.316; -6dB = 0.501
If the property "antenna_coupling_ampl" is set to zero, then this C_r and C_t matrices are not used.