# QuaDRiGa Version History

v2.2.0
(Release: 2019-06-27)

v2.1.30
- Bugfix: [qd_arrayant.xml_write] Angular grid sampling was wrong for large angle offsets
v2.1.29
- Bugfix: [qd_arrayant.rotate_pattern] did not correctly sample the angles for non-uniform angle grids
- Bugfix: [qf.log2dfid] Crashed when not showing a figure
- Bugfix: [qd_arrayant.xml_write] Adjusted sampling grid to variable angles
- Bugfix: [qd_layout.kml2layout] Added option to read numbers in exponential format
- Bugfix: [qd_layout.kml2layout] Changed coordinate transformation procedure to cover the whole earth
- Bugfix: [qd_layout.layout2kml] Changed coordinate transformation procedure to cover the whole earth
- Bugfix: [qd_sos] Crashed when setting different decorrelation distances for TX and RX
- Bugfix: [qd_sos.generate] Random sampling of the unit sphere had an additional factor of pi
- Performace: [qd_layout.init_builder] Reduced execution time when adding many transmitters
- Performace: [qd_layout] Reduced execution time when adding many transmitters
- Feature: [qd_layout.set_scenario] Added default decorrelation distanced for TX and RX; added Satellite scenarios
- Feature: [qd_layout.visualize] Shows LOS-TXs in green when only a singe Rx is selected
- Cleanup: [qd_builder.gen_parameters] Added error message when LSP xcorr-matrix is not positive definite
- Cleanup: [qd_arrayant.generate] Restructured method
- Cleanup: [qf.interp] Added option to provide empty variable for "y" when using 1D interpolation
v2.1.28
- Feature: [qd_builder.write_conf_file] Added method to write scenario configuration files
- Feature: [qd_builder] Added support for LSPs depending on: TX-RX-distance, TX-height and TX elevation
- Feature: [qf.calc_angular_spread_sphere] Added function to calculate spherical angular spreads
- Feature: [qf.log2dfit] Added function for parameter fitting
- Feature: [qd_arrayant.rotate_pattern] Added support for non-uniform angular grids
- Bugfix: [qd_track] Using the underscore in the track name might lead to wrong results, added error message
v2.1.27
- Feature: [qd_builder] Extended the scenario table with height, distance and elevation dependence for the LSPs
- Feature: [qd_builder.write_conf_file] Added method to write configuration files
- Feature: [qf.log2dfit] Logarithmic curve fitting with two variables
- Feature: [qf.calc_angular_spreads_sphere] Calculates the angular spread on a shere in [rad]
- Feature: [qd_builder.get_pl] Added satellite path-loss models
- Bugfix: [qd_builder/generate_lsf] returned NaN when bs-height or elevation angle was 0
v2.1.26
- Bugfix: [qf.calc_angles] returned wrong results for non-zero array antenna element positions
- Bugfix: [qd_layout.set_satellite_pos] calculation for distance between user terminal and satellite was incorrect
v2.1.25
- Feature: [qd_arrayant.calc_element_position] Calculates the element positions from the antenna patterns
- Feature: [qd_layout] Added option to perfrom multi-frequency simulations for 3GPP baseline simulations
- Bugfix: [qd_arrayant.visualize] crashed on ovtave 4.4.0
- Bugfix: [qd_track.interpolate_movement] crashed when no interpolation method was specified
- Bugfix: [qd_builder.gen_parameters] Changes the angular mapping function for 3GPP baseline simulations due to calibration mismatch
- Performance: [qf.calc_angles] Slight performance enhancements
- Performance: [qd_arrayant.interpolate] Performance enhancements
v2.1.24
- Bugfix: [qd_builder/generate_subpaths] did not apply Lapalcialn subpath angle offsets and inter cluster DS
- Bugfix: [qd_builder.gen_parameters] long computing time for large delay values
- Bugfix: [qd_layout.set_scenario] 3GPP Indoor office LOS probabilities were incorrect
- Bugfix: 3GPP 38.901 Configuration files for NLOS and O2I did not account for zero-power LOS path in QuaDRiGa
- Updated tutorials 7-9.
v2.1.23
- Bugfix: [+qd.calc_angles] Return wrong results when antenna had no polarization resolution.
- Bugfix: [qd_layout/kmlread] KML parser did not process multiple entries in pairing when using the description field
- Bugfix: [qd_layout.kml2layout] added space before ACF name
- Feature: [qd_layout.kml2layout] Added input variable to enable / disable segment splitting.
- Feature: Added vehicular array antennas
- Feature: Added parameters for vehicular side link from 3GPP TR 37.855 V15.1.0 (2018-09)
v2.1.22
- Update: updated documentation of all classes and methods
- Feature: [qd_arrayant.set_grid] Added option to calculate the MSE when interpolating the array antenna back to the original grid
- Bugfix: [qd_arrayant.beam_explorer] did not consider element positions.
- Bugfix: [qd_arrayant] Removed "calc_array_resolution" method (false results)
- Bugfix: [qd_layout] Removes "get_channels_seg" method (false results)
- Bugfix: [qd_arrayant.set_grid] did occasionally omit angels due to numeric precision errors
v2.1.21
- Bugfix: [qd_channel.split_snap] did not split tx positions for dual-mobility channels
- Feature: [qd_builder.gen_parameters] added option to generate LSF and SSF separately
- Feature: [qd_builder] Added backwards-compatibility to call methods "gen_ssf_parameters" and "gen_lsf_parameters"
v2.1.20
- Bugfix: [qd_track] "par" struct was invisible. This led to the O2I loss not being accessible in the builder objects.
- Bugfux: [qd_channel.calc_XPR] crashed when the antenna pattern contained zeros
- Update: [+qf] Added documentation to package functions. Remove some rarely used functions (they are not private to the calling classes.)
- Performance: [qd_arrayant.interpolate] reduced required computation time
v2.1.19
- Bugfix: [qd_channel.combine_tx_rx] crashed when duplicate tx or rx names were provided. Now shows warning message and only uses first channel.
- Bugfix: [+qf.interp] returned NaNs if duplicate values were given in input vectors x or y.
- Bugfix: [+qf.acdf] crashed when there were more than 2 dimensions and averaging was enabled.
- Bugfix: [qd_arrayant.interpolate] used incorrect azimuth angles at en elevation of 90 degree.
- Feature: [qd_arrayant.set_grid] Calling with no parameters now interpolates the pattern to 1 degree accuracy.
- Performace: [qd_layout.get_channels] limits maximum update factor to 1 if update rate results in a smaller sample density than specified in the simulation parameters.
v2.1.18
- Performance: [qf.calc_angles] Improved performance and robustness
- Performance: [qd_arrayant.interpolate] Improved performance and robustness
v2.1.17
- Bugfix: [qd_arrayant.interpolate] Improved accuracy for low-resolution patterns (could have significant interpolation artefacts)
- Feature: [qd_arrayant.beam_explorer] Added function to visualize beam forming performance of an array antenna
v2.1.16
- Bugfix: [qd_builder.generte_GR_parameters] Removed error message for low heights
- Bugfix: [qd_builder.get_pl] Rx or Tx heights of 0 causes NAN values for NLOS path loss
v2.1.15
- Bugfix: [qd_arrayant.xml_write] wrote -0 valued to XML file.
- Bugfix: [qd_layout.layout2kml] did not write Baseline3GPP field
- Bugfix: [qd_layout.kml2layout] did not read Baseline3GPP field
- Bugfix: [qd_layout.kml2layout] Autocorrelation function name had an additional space ' ' character.
- Bugfix: [qd_layout] Fixed error in object indexing when only single tx or rx was defined (Ocatave only bug).
- Bugfix: [qd_track.interpolate] deleted movement profile when using "distance" interpolation
- Bugfix: [qd_track.split_segment] could get stuck in endless loop when segment end coincided with track end.
- Feature: [qd_layout.get_channels] Added warning message when using 3GPP baseline simulations with mobility.
v2.1.14
- Feature: [qd_builder.gen_parameters] Saves FBS and LBS to builder objects
- Bugfix: [qd_builder.split_multi_freq] Returned incorrect results if called on a single-frequency builder
- Bugfix: [qd_builder/private/generate_paths] Returned complex-valued delays when a minimum delay spread was reached by the ground reflection path
v2.1.13
- [qd_builder] Renamed "gen_ssf_parameters" to "gen_parameters"
v2.1.12
- [qd_builder] Restructured parameter generation methods
- [qd_builder] Removed "gen_lsf_parameters" and "gen_lsp_val". They are now part of "gen_parameters"
v2.1.11
- Removed manual LSF parameter interface from [qd_track] and subsequent functionality (due to maintenance overhead and incompatibility with new features)
v2.1.10
- Feature: [qd.builder.init_sos] Added method to initialize all SOS generators simultaneously
- Feature: [qd_simulation_parameters] Added 3GPP baseline option, removed switch for spherical waves and polarization rotation
- Feature: [qd_simulation_parameters] Disable multi-frequency simulations for 3GPP baseline option, show warning
- Feature: [qd_builder] Updated cluster delay and angle generation procedure
- Feature: [qd_builder] Disable ground reflection for 3GPP baseline, show warning
- Bugfix: [qd_sos.val] Updated Normal to Uniform transformation
v2.1.9
- Bugfix: [qd_arrayant.sub_array] did not set center frequency.
- Bugfix: [qd_arrayant.xml_write] did not write the coupling matrix correctly
- Feature: [qd_simulation_parameters] added option to select the ACF type for the random generators
- Performace: [qd_sos.set_acf] Updated sinusoid coefficients (better approximation accuracy)
v2.1.8
- Bugfix: [qd_layout] Default tx names had two digits only. This could change the channel order after merging. Fixed by setting default Tx names to 4 digits.
v2.1.7
- Feature: [qd_sos] Added new features to SOS correlation model
v2.1.6
- Performace: [qd_channel.quantize_delays] is now 10 times faster and required much less memory.
v2.1.5
- Bugfix: [+qf.calc_angles] crashed when only vertical polarization was used
- Bugfix: [qd_arrayant.copy] did not copy the center frequency setting
- Bugfix: [qd_arrayant.interpolate] crashed if there was only one elevation or azimuth angle
- Bugfix: [qd_builder.get_channels] did not process KF and SF values that were set manually
v2.1.4
- Feature: [qd_arrayant] Added feature to read and write antenna data from/to XML files.
- Feature: [qd_layout] Added feature to read and write layouts to KML
- Feature: [qd_track.add_segment] Added method to add segments and automatically add points
- Feature: [quadriga_kml] Added option to run QuaDriga based on KML files
- Bugfix: [qd_builder.get_pl] returned NaNs for dual-slope when the MT or BS height was 0.
- Bugfix: [qd_channel.combine_tx_rx] crashed when not all MIMO sublinks were provided.
- Bugfix: [qd_channel.combine_tx_rx] did not consider TX speed when calculating the sample density
- Bugfix: [qd_channel.hdf5_save] Did not save tx_position for dual-mobility
- Bugfix: [qd_channel.propsim_export] crashed when not all MIMO sublinks were provided.
- Bugfix: [qd_layout.copy] crashed due to interface changes
- Bugfix: [qd_layout.get_channels] crashed when there were unequal track lenghts in single-mobility setup
- Bugfix: [qd_track.correct_overlap] did not work correctly when there were too few points
- Bugfix: [qd_track.split_segment] did not work correctly when there were too few points
v2.1.3
- Bugfix: [qd_channel.interpolate] ignored Tx position in dual-mobility scenarios when calculating the threshold for the segment detection.
- Bugfix: [qd_channel.interpolate] did not process "snapshot" based distance values. This is needed when only orientation changes (e.g. radar) are used.
- Bugfix: [qd_layout.gen_lsf_parameters] crashed when links were disabled in "qd_layout.paring".
- Bugfix: [qd_layout.get_channels] crashed when simulation time of dynamic channels was incnsistent.
- Bugfix: [qd_layout.get_channels] did not process devices that only changes orientation, but not position.
- Bugfix: [qd_layout.set_pairing] had wrong default setting for the "check_parfiles" input variable.
- Bugfix: [qd_layout.set_scenario] did not set single scenarios correctly when "tx" or "rx" subsets were selected.
- Bugfix: [qd_track.interpolate] did not interpolate static tracks.
- Bugfix: [qd_track.interpolate] did not return correct snapshot indices in "snapshot" mode.
- Bugfix: [qd_track] removed "orientation" property when changing the number of snapshots.
- Bugfix: [qd_track] crashed when setting track parameters (e.g. DS) with zero-value.
- Bugfix: [qd_track.set_speed] did not work correctly for zero-length tracks.
- Feature: [qd_layout.set_pairing] disables links where Tx and Rx are at the same position.
- Feature: [qd_layout.visualize] now displays Tx names on the left of the icon to avoid overlap with Rx names.
v2.1.2
- Bugfix: [qd_builder.parse_positions] did not correctly process closed tracks
- Feature: [qd_builder.check_dual_mobility] now checks for Tranceivers sharing the same location.
v2.1.1
- Bugfix: [qd_channel.merge] produced wrong order of birth-death processes.
- Bugfix: [qd_layout.set_scenario] fixed error message for unsupported scearnios.
- Bugfix: [qd_channel.interpolate] removed unused variables.
- Bugfix: [qd_layout.init_builder] used wrong Rx antenna indexing, causing occasional crashed and wrong results.
- Feature: [qd_layout] Added hidden "track" property to support legacy scripts
v2.1.0-707
- Bugfix: [qd_layout.get_channels] crashed when multiple tracks had same name; added error message
v2.1.0-703
- Bugfix: [qd_arrayant.generate] did not set the center-frequency for some array types correctly.
- Bugfix: [qd_channel.merge] did not process Tx positions.
- Feature: [qd_channel.merging_cost_fcn] Performance optimization
- Bugfix: [qd_layout.get_channels] crashed if Tx and Rx track had the same name.
- Feature: [qd_layout.set_scenario] Added UD2D LOS probability scenarios
v2.0.2-702
- Feature: Added config files for urban D2D scenarios.
- Bugfix: [qd_channel.interpolate] crashed when using single-antenna channels and cubic interpolation; improved path tracking
- Bugfix: [qd_channel.merging_cost_fcn] did not correctly consider ground reflection
- Bugfix: [qd_layout.get_channels] channel interpolation did not work for closed tracks; track objects in layout were changed
- Bugfix: []qd_track.get_subtrack] created inconsistent results for closed tracks
- Bugfix: [qd_track.interpolate] did not update movement profile after interpolation (causing crash in channel interpolation)
v2.0.2-701
- Feature: [+qf.slerp] Added option to interpolate multiple inputs at the same time
- Bugfix: [+qf.slerp] Typecast errors, performance improvements
- Bugfix: [qd_channel.interpolate] Now using SLERP for phase interpolation, reduction of interpolation artefacts in Doppler spectrum
- Bugfix: [qd_layout.get_channels] Now interpolates tracks and channel coefficients correctly
v2.0.1-700
- Feature: [+qf.slerp] Added function for spheric linear interpolation
- Feature: [qd_track.interpolate] Added snapshot-based track interpolation for dual-mobility
- Bugfix: [qd_track.interpolate] Fixed incorrect interpolation results for the orientation
- Bugfix: [qd_track] Did not indicate closed tracks for static positions with changing orientation
v2.0.1-699
- Bugfix: [+qf.interp] Output was cast to single precision
- Bugfix: [qd_layout.parse_positions] Did not process orientation property
- Feature: [qd_track.interpolate] Added time-based track interpolation for dual-mobility
v2.0.1-698
- Bugfix: [qd_builder.gen_lsf_parameters] Crached when using single-mobility with O2I penetration loss
- Bugfix: [qd_layout] Incorrect initialization of "qd_track"-objects could lead to errors in the processing
- Bugfix: [qd_track] Incorrect initialization of "qd_track"-objects could lead to errors in the processing
- Bugfix: [qd_layout.set_pairing] Crashed when using power / sf mode
v2.0.1-696
- Bugfix: [qd_builder.check_dual_mobility] Added orientation support
- Bugfix: [qd_builder.get_channels] Added orientation support
- Bugfix: [qd_builder.get_los_channels] Added orientation support
v2.0.1-695
- Feature: [qd_track] Added orientation property, removed ground and height direction
- Feature: [+qf.calc_ant_rotation] Completely rewritten to match standard mathematical definitions
- Feature: [qd_arrayant.rotate_pattern] Updated to use "+qf.calc_ant_rotation"
- Feature: [qd_layout.power_map] Now uses track orientations
- Performance: [qd_builder.get_los_channels] Removed redundant computations
- Performance: [qd_builder.check_dual_mobility] Removed redundant computations (currently breaks)
v2.0.1-694
- Bugfix: [qd_track] Setting the ground-direction deleted already existing height-direction data
- Bugfix: [qd_builder.check_dual_mobility] Cracked when using multi-Tx and single-Rx
- Bugfix: [qd_builder.get_channels] Crashed when disabling spherical waves
- Bugfix: [qd_builder.get_pl] Crashed when not supporting a tx-track
- Performance: [qd_builder] Improved calculation of frequency-dependant LSPs
- Performance: [qd_sos.val] Some performance improvements
- Feature: [qd_builder.get_los_channels] Added support for elevation polarization rotation and dual-mobility
- Feature: [+qf.calc_ant_rotation] Added option for using different rotation angles
v2.0.1-693
- Bugfix: [+qf.eqo] Typecast error (only affects octave)
- Bugfix: [qd_builder.check_dual_mobility] Fixed some inconsistencies
- Bugfix: [qd_builder.gen_lsf_parameters] Fixed some inconsistencies
- Bugfix: [qd_builder] simpar property was not correctly initialized in the constructor
- Bugfix: [qd_builder.visualize_clusters] did not select the correct tx position
- Feature: [qd_builder.generate_paths] Added option for correlated AoD / AoD for closely spaced UEs
- Feature: [qd_builder.get_lsp_val] Added option for correlated AoD / AoD for closely spaced UEs
- Feature: [qs_sos.acfi] Interpolation tool for the ACF
v2.0.1-692
- Feature: [+qf.calc_ant_rotation] Added function to calc antenna rotation matrix
- Feature: [qd_builder.check_dual_mobility] Automated testing for dual-mobility conformance
- Feature: [qd_builder.*] Added option for tx mobility
- [qd_builder.calc_scatter_positions] is now a private method
- Bugfix: [qd_sos] did not output correct ACF due to wrong scaling
v2.0.1-689
- Feature: [qd_builder.gen_lsf_parameters] Added option for tx mobility
- Feature: [qd_builder.get_lsp_val] Added option for tx mobility
- Feature: [qd_buil der.ge t_pl] Added option for tx mobility
- Feature: [qd_layout.gen_lsf_parameters] Added option for tx mobility (unfinished)
- Feature: [qd_layout.gen_o2i_loss] Added option for tx mobility
- Feature: [qd_layout.init_builder] Added option for tx mobility
- Feature: [qd_layout.set_scenario] Added option for tx mobility
- Bugfix: [qd_track.set_subtrack] Did not return correct result for closed tracks with only one segment
v2.0.1-687
- Feature: [qd_layout.parse_positions] Functions to extract positioning information from layout including Tx mobility
- Feature: [qd_track.get_subtrack] Added option to extract data for specific transmitters
v2.0.1-683
- Feature: [qd_array] Added export function to write array response to text file
- Feature: [qd_array] Added center frequency property
- Feature: [qd_layout] Added support for tx mobility
- Feature: [qd_layout.set_scenario] Added spatial consistency for LOS/NLOS state for mobile Tx
- Feature: [qd_sos] Added support for dual mobility
- Bugfix: [qd_channel.interpolate] crashed when delay were fixed
v2.0.1-677
- Bugfix: [qd_layout.set_scenario] crashed when incorrect number of BSs was given in track segments.
- Bugfix: [+qf.interp] Missing type declaration when creating the output matrix (crashed in Octave)
- Bugfix: [qd_channel.interpolate] Missing type declaration when creating the output matrix using linear interpoaltion (crashed in Octave)
- Bugfix: [qd_layout.get_channels] Channel interpolation crashed when using closed tracks
- Feature: [qd_channel.combine_tx_rx] : combines channels from a qd_channel array into a single object
- Added "center_frequency" property to class qd_channel.
- Extension: Added propsim export method to class "qd_channel".
- Extension: Added "quantize_delays" method to class "qd_channel".
v2.0.0-670
- Bugfix: [qd_channel.interpolate] Fixed moving taps when interpolating channels with birth/death of taps.

v2.0.0-664
(Release: 2017-08-01)

Major update and redesign.

v1.4.8-571
(Release: 2016-08-05)

v1.4.8-571
- Bugfix: [array.generate_multi] There was a sign error in the array generation function for electric tilt angles
v1.4.7-570
- Bugfix: [channel_builder/get_channels] Wrong antenna response was created when using drifting precision 0 (only affects version 1.4.5 and 1.4.6)
- Performace [array/generate] 3GPP-3D antenna array generation function was inefficient
v1.4.5-568
- Bugfix: [channel_builder/get_channels] Fading of clusters was effectively removed by averaging the power in version v1.3.11-538. This is fixed by a new power-scaling function.
v1.4.5-567
- Feature: Added support for the ground reflection (2-Ray model)
- Feature: Added config-file for Freespace propagation
- Update: [channel_builder/init_parameters] Fixed LOS pahse to 0 and ground reflection phase to 180 degree
- Update: [channel_builder/private/update_angles] Redesign of the "rescale_departure_angles" function
- Update: Set default intra-cluster angular spreads to 0
v1.4.4-566
- Bugfix: [array.interpolate] crashed when requested agnles for the interpolater were outside the provided angle range in the patterns.
- Bugfix: [array.visualize] Crashed when single precision patters were provided.
- Feature: [layout.visualize] Added option to show the Rx numbers.
v1.4.3-557
- Bugfix: [array.set_grid] crashed when the array object only defines a partial angle range and the interpolation was outside this range
- Bugfix: [layout.get_channels] Crashed while checking the sampling theorem consistency when more than one track was given.
- Feature: [array.visualize] now returns the figure handle for further image manipulation
v1.4.2-556
- Bugfix: [layout.get_channels] now checks if the sampling theorem is met and adjusts the sample density automatically if a movement profile is given (i.e. by call track.set_speed).
v1.4.1-555
- Feature: [layout.get_channels] now interpolates [par.pg] when speed profiles are provided.

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/>.