# QuaDRiGa Version History

v1.4.1-551
(Release: 2016-03-22)

v1.4.1-551
- Bugfix: [channel] Setting new coefficients "channel.coeff = X" set the delays to 0 in some cases.
- Feature: [channel_builder.get_channels] Store LSPs and SSPs used for coefficient generation to "channel.par"
- Feature: Added "qf" package for commonly used helper functions.
v1.4.0-547
- Feature: Added initial mmMAGIC LOS probability model and parameters
- Moved commonly used helper functions to folder "+qf"
v1.3.12-545
- Bugfix: [parameter_set.get_sf_profile] crashed when parameters were given in "track.par", but no map was available in "parameter_set"
- Bugfix: [array.generte_multi] There was a missing "sin" in the weight calculation.
- Bugfix: [channel_builder.visualize_clusters] displayed garbage when more than one subpath were selected.
- Feature: [parameter_set.scenpar] Added additional parameters for scaling of LSPs with frequency
- Feature: Added support for scaling LSPs with frequency in channel builder and map generation
- Feature: [layout.randomize_rx_positions] Added option to create only a subset of positions
- Performance: [channel.merge] Speedup for channels with only one segment
- Refined 3GPP-3D configuration files
v1.3.11-538
- Bugfix: [channel_builder.get_channels] Crashed with multiple UEs per CB and drifting_precision >= 4
- Bugfix: [channel_builder.get_channels] Causes wrong power-scaling when WINNER-polarization model was used (adding random phases)
- Feature: [layout.generate] Added options to create regular layouts with 37 sites (3 rings of interferers)
- Performance: [channel.merge] Speedup for channels with only one segment
- Performance: [layout.create_parameter_sets] Now runs faster if same scenarios get assigned to different BS
v1.3.10-536
- Bugfix: [layout.create_parameter_sets] Not creating a copy of the track objects (and copying only the handle instead) could lead to wrong LSPs when used in conjunction with "layout.generate_parameters". In this case, the parameters were written to the track objects and subsequently used in "parameter_set.get_sf_profile".
- Bugfix: [layout.create_parameter_sets] did not process the "xpr"-fields in "track.par" when assigning subtracks to transmitters.
- Bugfix (minor) [channel_builder.get_channels] Progress bar was inconsistent (number of dots changed depending on the number of BSs)
- Bugfix (minor) [parameter_set] Progress bar was inconsistent (number of dots changed depending on the number of BSs)
- Feature: Added distance-dependent elevation-of-departure spread according to 3GPP TR 36.873
- Feature: Added 3GPP-3D UMi and UMa parameter tables and PL-Models
- Feature: [array.generate] Added option to set the element spacing for the "3gpp-3d" antenna model.
- Feature: [channel_builder.get_los_channels] It is now possible to input parameter_set-arrays
- Feature: [layout.set_scenario] now supports indoor fractions for the 3GPP-3D-UMi and 3GPP-3D-UMa scenarios.
v1.3.9-533
- Feature: Added 3GPP-3D antenna model
- Feature: Added method [layout.set_scenario] to assign scenarios to users. This implements the distance-dependent LOS probability for 3GPP-3D-UMi and 3GPP-3D-UMa.
- Feature: [track.set_scenario] Added option to only create segments, but leave the scenario empty.
- Added parameter files [config] for 3GPP-3D and METIS 50-70 GHz scenarios.
- Bugfix: Zero-Elevations spreads (2D simulations) caused crash in channel_builder due to division by zero
- Bugfix: [layout.get_channels] did not return the parameter maps
- Feature: Setting "simulation_parameters.map_resolution = 0" now allows to automatically choose the optimal map resolution.
- Feature: Added options in channel objects to store additional evaluation data.
v1.3.8-490
- Bugfix: [channl.split_tx] returned wrong order of channel objects when scenario names were included in channel.name
- Bugfix: [layout.get_channels] crashed when using non-default paring
v1.3.7-485
- Bugfix: [channel.interpolate] Fixed several bug in the channel interpolation method that could return wrong values
v1.3.6-484
- Updated documentation
- Performance: [channel.hdf_load] Added persistent storage for the HDF info to significantly reduce loading speeds.
v1.3.5-483
- Feature [channel] Added attribute "pg" to store the average path gain values.
- Bugfix: [channel.split_tx] crashed due to wrong object initialization.
- Bugfix: [layout.get_channels] crashed during interpolation when different speed setting was used.
- Performance: [channel.interpolate] Increased performance when using spline interpolation.
v1.3.4-479
- Bugfix: [array.interpolate] The planar projection of the element positions caused an error when only a subset of the elements is used for interpoaltion.
- Bugfix: [array.sub_array] Single-precision flag was ignored.
- Bugfix: [array.set.elevation_grid] Rounding errors could cause error message.
- Performance: [channel_builder.get_los_channels] Removed unneccessary computaitons.
v1.3.3-478
- Bugfix: [channel_builder.get_channels] Using "drifting_precision = 0" ignored the distance-dependent phase.
- Bugfix: [channel_builder.get_los_channels] Using "drifting_precision = 0" ignored the distance-dependent phase.
- Feature: [array] Added option to do array calculations in single precision. This is slightly faster than using double precision.
- Performance: [channel_builder.get_los_channels] Several performace updates
- Performance: [array.interpolate] Some small performance updates.
v1.3.2-467
- Feature: [layout.generate] Added regular cell layout with 6 sectors per BS
- Update: [layout.visualize] Setting the input parameter "show_names" to 0 also disables the tx-names.
- Performance: [layout.power_map] Some performance improvements
v1.3.1-464
- Bugfix: [array] Array objects did not allow multipe coupling matrices for one pattern.
- Bugfix: [channel_builder.get_channels] Height direction was not correctly implemented.
- Performace: [channel_builder.get_los_channels] Added options for single precision computing and unformatted output. This helps to significantly speed up the computations for large data sets.
- Corrected many typos in the souce code documentation.
v1.3.0-460
- Added Multi-Bounce model
- Added Massive MIMO parametrization from measurements in downtown Dresden, Germany at 2.6 GHz

v1.2.32-458
(Release: 2015-03-23)

v1.2.32-458
- Removed HTML Help (Newer MATLAB Versions dont support it anymore)
- Updated Documentation
v1.2.31-457
- Feature: [channel.split_tx] Added method to split channel objects based on their transmit antenna indices, e.g. to separate the channels from different sectors of a BS.
- Bugfix: [array.generate_multi] Input conversion of the tilt angle from [deg] to [rad] was wrong.
- Bugfix: [layout.power_map] The optional input parameters "tx_power" can not be set as a scalar that will be used for all antennas.
v1.2.30-456
- Feature: [layout.get_channels_seg] Added option to return channels segment-wise. This might help to relax memory requirements.
- Bugfix: [array.generate] returned an error for the "parametric" antenna if no parameters were given.
- Bugfix: [layout.generate_parameters] returned an error if pairing matrix was not set to default.
v1.2.29-448
- Update: [array] Added geometric option for the calculation of electric downtilts.
- Update: [array] Added option to define a antenna pattern by a set of parameters ("parametric" antenna).
v1.2.29-441
- Bugfix: Fixed calculation error in "layout.estimate_memory_usage"
- Feature: [array] Added method to generate multi-element stacked arrays with electrical downtilt.
- Feature: [array] Added method to concat arrays.
- Feature: [array] Added method to compress arrays.
- Feature: [array] Added method to calculate the antenna element gain.
v1.2.28-415
- Bugfix: [array.rotate_pattern] There was an ambiguity at the poles of the pattern.
- Update: Added [array.import_pattern] again in order to keep compatible with older versions.
v1.2.27-413
- Feature: [array] Added support for different polarization bases: Cartesian, AZ-EL, EL-AZ
- Feature: [array] Added method to transform polarization bases.
- Update: Redesigned the "array.visualize" function.
- Bugfix: "array.combine_pattern" turned the polarization.
v1.2.26-410
- Bugfix: In versions 1.2.23 - 1.2.25, the circular phases were updated for each tx-antenna recursively, causing a phase rotation.
v1.2.25-409
- Bugfix: "channel_builder.get_channels" ; There was a sign-error in the polarization rotation matrix for the receiver.
v1.2.24-408
- Update: Replaced method to calculate effective radiation patterns "combine_patterns" with a more efficient version.
- Bugfix: "layout.estimate_memory_usage" crashed.
v1.2.23-404
- Update: Changed the method to calculate the polarization rotation. The orientation vector is not needed anymore and the full complex-valued data from the patterns is used in the model core.
- Feature: Added method to calculate effective radiation patterns from multi-element arrays with fixed phase offset.
- Feature: Added elevation direction for the track object.
- Removed method: array.apply_common_phase
- Removed method: array.estimate_common_phase
- Removed method: array.estimate_pol_vector
- Removed method: array.import_pattern
- Removed property: array.common_phase
- Removed property: array.pol_vector
- Removed property: simulation_parameters.drifting_update_threshold
- Bugfix: Updating the parameter maps did not invalidate the data stored in the parameter_set object. An update did thus not replace the data with the new map.
v1.2.22-393
- Feature: Changed map storage method in parameter_set in order to reduce memory requirement with large layouts. Maps are now stored in single precision. There is one map per parameter. Maps that don't have a variance (i.e. sigma in scenpar is zero) are stored as scalar.
- Bugfix: The mus and sigma values in the maps got changed slightly after applying the inter-parameter correlation. This was fixed.
v1.2.21-382
- Bugfix: Identical linear cross-polarization values were used for each cluster.
- Bugxix: WINNER angular mapping function did not correctly apply the departure- and arrival angles for the LOS cluster.
- Bugfix: WINNER XPOL-Values were not correctly applied to the channel matrix
v1.2.20-374
- Feature: Added option to generate maps using the algorithm from WINNER.
v1.2.19-354
- Feature: Added rescaling of the angles if single-bounce paths were generated in the multi-bounce model.
- Updated documentation.
v1.2.18-353
- Feature: Added option to select the new or the old (WINNER) angular mapping function. This allows to use QuaDriga also as a WINNER+ reference implementation.
- Decluttered cluster visualization function.
v1.2.17-352
- Feature: Added method 'channel_builder.calc_scatter_positions' to return the 3-D coordinates of the scatterers.
- Bugfix: 'update_drifting' had a sign-error that changed the arrival azimuth angles by 180 degrees.
v1.2.15-348
- Feature: Added visualization function for the scattering clusters to the channel builder.
- Some minor fixes in the drifting module.
v1.2.14-347
- Feature: Added method to 'channel_builder' that initializes the parameters without calculating the channel coefficients.
- When 'drifting_precision' is set to 4, departure angles in 'channel_builder' are now correctly initialized.
- Fix: There was a sign-error in the drifting module. However, this had no effect on the results.
v.1.2.13-345
- Fix: Updated method for calculating the departure and arrival angles. The old method had a strong bias when the KF was too big.
v1.2.12-340
- Bugfix: Channel generation crashed when using drifting precision 2 and only one Rx antenna.
v1.2.11-338
- Feature: Added function "layout.estimate_memory_usage" to get an estimate of the required memory of a simulation before running it.
v.1.2.10-336
- Performace: Further reduced memory requirements by up to 75% when using large antenna arrays with spherical wave propagation.
- Performace: Omitted many unnecessary computations when using spherical wave propagation. Calculations can be up to 50% faster.
- Bugfix: "drifting_precision = 4" did not use the correct angles for the Tx-array interpolation.
- Removed support for NLOS-Scattering radius. This feature was untested and unvalidated. A working implementation for fututre reference can be found in Tag "2014.04.30_v1.2.3-307".
v1.2.9-335
- Fix: Reduced memory requirements of "channel_builder.get_channels" by ~60%. This was due to the calculation of all 20 subpaths for each snapshot. The processing is now done per snapshot in realtime.
- Removed option "simulation_parameters.use_subpath_output". It is no longer possible to return individual subpaths.
v1.2.8-333
- Updated layout/power_map function
- Updated example section in function description (example was erroneous previously)
v1.2.7-332
- Feature: Added 'rx_height' parameter to layout/power_map function
- Bugfix: Fixed error in case of unspecified map boundaries
v1.2.6-331
- Fix: Updated definition of "simulation_parameters.drifting_precision". [2] is now strictly for spherical waves at the Rx and planar waves at the Tx. [4] is now for spherical waves at both, Tx and Rx, but without angle mapping.
- Bugfix: The angular projection in "array.interpolate" ignored the given element number. That could lead to wrong departure angles in the data if drifting_precision was set to 2 or 3.
- Bugfix: New delay combining from v1.2.5 function could produce NaN in the delays.
v1.2.5-328
- Update: When setting "channel.individual_delays" from 1 to 0, a power-weighted average of the delays is calculated. Before, only delay of the first MIMO-Link (Tx=1, Rx=1) was used.
v1.2.4-327
- Feature: Added option to interpolate channels for each antenna element separately
- Fix: "track.interpolate_positions" could decrease the sampling rate when trying to match start and end pints of a track. Now, the sampling is increased (i.e. more samples are added), but never decreased.
- Fix: "track.interpolate_movement" now strictly uses the given sampling rate.
v1.2.3-307
- Bugfix: Setting path to config file in track objects did not work.
v1.2.2-305
- Exchanged correction function for RMS-Angular spread
v1.2.1-301
- Bugfix: Channel Builder created too large angular spreads.
- Bugfix: Setting path to config file in track objects did not work.

v1.2.0-283
(Release: 2014-02-19)

v1.2.0-283
- Bugfix: XPR in output channel coefficients did not match the given value in the parameter set when "simulation_parameters.use_polarization_rotation" was set to 2.
v1.1.4-272
- Bugfix: NLOS-Circular XPR was asymmetric for LHCP and RHCP
- Bugfix: The antenna gain was calculated wrong in "array.visualize" when complex valued field patterns were used.
v1.1.3-268
- Added "xpr" to track.par
- Bugfix: "parameter_set.update_parameters" did not select the right row from "track.par" if more that one transmitter is present and the manual parameter mode was used.
- Bugfix: "layout.create_parameter_sets(0)" used random variables even if no parameters were generated.
- Bugfix: "parameter_set.update_parameters" used random variables even if no parameters were generated.
v1.1.2-267
- Removed "channel.copy_objects"
- Removed "layout.winner_compatible_output"
- Bugfix: layout.generate_parameters crashed when shortnames were used
- Feature: Added "tx_power" option to "layout.power_map"
- Feature: Added shadow-fading mode to "layout.set_pairing"
- Update of the documentation
- Added unit test for "layout.set_pairing"
v1.1.1-266
- Feature: Added link selection by power level to "layout.set_pairing"
- Feature: Added the option to have different scenarios for each Tx in "layout.power_map"
- Performance: Added shortname processing to "layout.create_parameter_sets"

v1.1.0-263
(Release: 2014-01-14)

v1.1.0-263
- Updated help files
- Bugfix: track.set_scenario crashed with only one segment when "create_segments" was enabled
v1.1.0-261
- Bugfix: Due to false normalization of the radiation field patterns, the antenna gains were wrong, at least for dipoles and custom antennas.
- Feature: added two new supported array types: 'short-dipole' and 'half-wave_dipole', due to backward compatibility 'dipole' still exists and is the same as 'short-dipole'
- Feature: Added Rx orientation to "channel_builder.get_los_channels"
- Feature: Added warning message to "channel_builder.get_los_channels" if "parset.rx_array" has more than one antenna object
- Feature: Added simplified interface to "parameter_set.update_parameters"
- Feature: Added parsing of MI-index to "parameter_set.get_pl"
- Removed "array.winner_compatible_output"
- Removed "channel_builder.winner_compatible_bulkpar"
- Removed "channel_builder.set_rx_array"
- Moved "parameter_set.set_LSP_xcorr_matrix" functionality to "parameter_set.set_par"
- Moved "parameter_set.set_scenpar" functionality to "parameter_set.set_par"
- Updated documentation of "channel_builder"
- Updated documentation of "parameter_set"
v1.0.16-244
- Bugfix: Output XPR values did not match the give XPR
- Bugfix: channel.get_version crashed when called on a channel array
- Added private function "generate_initial_xpr" to channel builder
- Added property "random_pol" to channel builder for processing the WINNER polarization method
- Added property "xpr" to parameter set
- Set default polarization method to 2
v1.0.15-240
- Feature: Config files can be loaded from current working directory.
v1.0.14-238
- Bugfix: Calling array constructor did not correctly pass arguments to "array.generate"
v1.0.13-235
- Feature: Added "layout.set_satellite_pos" to calculate TX coordinates for a given satellite orbital position
- Feature: Added "street"-grid generator to "track.generate"
- Feature: Added automatic generation of segments along a longer track to "track.set_scenario"
v1.0.12-231
- Bugfix: MATLAB did not free memory upon clearing an object.
v1.0.11-219
- Update: Added optional function to "array.import_pattern" to calibrates the phase of the pattern. A common phase offset on both polarizations is detected and removed.
- Update: Added alphabetical sorting at the output of "channel.merge".
- Update: Added option to calculate the phase in "layout.power_map".
- Update: "layout" now throws an error if Tx or Rx names are not unique.
- Feature: Added new method for the polarization calculation. "simpar.use_polarization_rotation = 3" now uses Pol-Rot. for the geometric pol. and WINNER method for the NLOS components.
v1.0.10-218
- Feature: Added import function of arbitrary antenna patterns
- Update: Removed "rhcp-lhcp-dipole" and added "lhcp-rhcp-dipole" to default antenna list. Fixed confusen in LHCP and RHCP.
- Update: Chnged cost function in "array.estimate_pol_vector" to match cost function of "array.import_pattern"
- Bugfix: "array.visualize" crashed when patterns are "0"
v1.0.9-216
- Bugfix: channel.merge crashed when only one path was present
- Bugfix: layout.power_map changed value of simulation_parameters.drifting_precision
- Update: Changed layout.power_map to return maps for each antenna-pair separately
- Update: Changed "track" interface to preserve scenario information when updating segments
- Added unit test for channel merger
v1.0.8-194
- Bugfix: Manual parameter inferface could apply path gain twice
v1.0.7-191
- Bugfix: Deleys could be initialized wrongly when setting drifting precision to 2 or 3
- Set LOS-scatter radius in all config-files to 0 (this feature was not part of WINNER and needs further testing)
v1.0.6-174
- Bugfix: channel_builder.get_los_channels ignored array geometry
- Bugfix: fixed a bug, which occurred in the spline_2d function in case there is only a single user and the subset of the maps is only 4 samples wide, by increasing the size of the map subset by a sample in each direction
- Changed structure in "simulation_parameters" class definition
v1.0.5-161
- Bugfix: Default Tx names now have the format "Tx01" instead of "Tx1". This caused the channels to be out of order when morae then 10 Txs were used.
v1.0.4-153
- Feature: Speed profiles are now processed automatically in "layout.get_channels"
v1.0.3-152
- Feature: Manual Parameter Interface
- Bugfix: Setting the individual-delays flag in "channel"-objects failed for SISO channels
- Performance: Added option to skip in-depth checking of config-files
- Improved comments and variable names in "channel.merge"
- Moved SF-scaling into "parameter_set.get_pl"
- Moved 2D spline interpolation in "parameter_set" into a separate subfunction
- "parameter_set" now uses the same spline interpolation for "update_parameters" and "get_sf_profile"
v1.0.2-146
- Feature: Added support for short names in config files.
v1.0.1-145
- Bugfix (major): K-Factor variations also scale shadow fading (error in KF-implementation)
- Bugfix (minor): WINNER path loss formula now uses ground distance
- Bugfix (minor): WINNER path loss formula now ignores MT heights lower than 1.5 m (no NaNs in output anymore)
- Bugfix (minor): layout.get_channels ignored "show_progress_bars"
- Feature: Disabling track names in "layout.visualize" is now possible (less clutter)
- Added config-files from WINNER+ and MIMOSA

v1.0.0-139
(Release: 2013-01-13)

QuaDRiGa Copyright (C) 2011-2015 Fraunhofer Heinrich Hertz Institute
e-mail: quadriga@hhi.fraunhofer.de
Fraunhofer Heinrich Hertz Institute
Wireless Communication and Networks
Einsteinufer 37, 10587 Berlin, Germany
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.