# QuaDRiGa Version History

v2.8.1
(Release: 2023-12-13)

v2.8.1
- Bugfix: gen_cdl_model could crash on Octave
- Added a more user-friendly Makefile for +qext
v2.8.0
- Added Tutorial 15
- Finalized qd_mesh documentation
v2.7.2
- Better MATLAB/Octave integration for CUDA Funtions
- Added diffraction model
v2.7.1
- Feature: Added qd_mesh class
- Added external c++/cuda/mex interface

v2.6.1
(Release: 2021-07-12)

v2.6.1
- Bugfix: [qd_builder.get_los_channels] ignored "tx_array" in some cases
v2.5.19
- Bugfix: [qd_builder.get_pl] fixed a small offset in the dual and tripple-slope models caused by not considering the heights at the brek-point
- Bugfix: [qd_channel.merge] deleted additional parameters in some cases
- Feature: [qd_builder.write_conf_file] Added annotation options
- Performace: [qd_layout.kml2layout] improved reading performance for a large number of terminals
- Performace: [qd_layout.kml2layout] improved writing performance for a large number of terminals
- Updated configuration files, documentation and tutorials
v2.5.18
- Bugfix: [qd_buillder.write_conf_file] Caused crash on Octave using MAC when writing complex numbers into the conf file
- Feature: [qd_channel.mat_save] Added option to save qd_channel object arrays to a mat specially formatted file
- Feature: [qd_channel.mat_load] Added option to load qd_channel object arrays from a mat file
v2.5.17
- Bugfix: [qf.calc_xpr] returned NaN when XPRMAT was zero
- Bugfix: [qd_arrayant.clac_phase_diff] fixed some rare numeric instabilities
- Bugfix: [qd_builder.add_sdc] Crashed when sdc_radius was empty and NumSubPaths was set to 1
- Bugfix: [qd_layout] Defined datatype for input variables of all set functions to avoid crashes during channel generation in Octave
- Cleanup: [qd_channel] Removed old analysis functions (they are still available in the v2.4 branch)
v2.5.16
- Fixed compatibility issues with older MATLAB vesions (different syntax of the "repmat"-function)
- Bugfix: [qd_builder.check_los] Crashed when adding a zero-power LOS component to multiple RX positions
v2.5.15
- Feature: [qd_builder.get_los_channels] Updated function to use new array antenna interpolation methods
- Bugfix: [qd_arrayant.interpolate] Did not work with different orientations for different angles
v2.5.14
- Feature: Octave 6.2 compatibility
- Feature: [qd_builder.check_dual_mobility] Remove "antenna-undefined" warning
- Bugfix: [qf.calc_angles] Crashed when using Octave without GPU acceleration
v2.5.13
- Bugfix: [qd_arrayant.interpolate] Fixed several numeric stability issues for spherical interpolation method
- Performace: [qf.calc_angles] Improved accuracy for detecting multiple spatial sub-paths
v2.5.12
- Bugfix: [qd_arrayant.interpolate] possible crash due to data type mismatch
- Bugfix: [qd_builder.add_sdc] Fixed division-by-zero error when BS and MT were on the same height
- Feature: [qf.calc_angles] improved accuracy for path-powers and angles, support for GPU acceleration
v2.5.11
- Feature: [qf.calc_angles] Added additional output variables
- Bugfix: [qd_builder.copy] Crashed in some cases due to class mismatch in the antenna arrays
- Bugfix: [qd_builder.gen_fbs_lbs] Relaxed numeric precision requirements to allow for single-precision inputs
- Bugfix: [qd_channel.fr] Crashed in some cases when using GPU acceleration due to datatype mismatch
- Bugfix: [qd_layout.layout2kml] Incorrect positions due to numeric precision errors
- Performace: [qd_layout] Improved performance when seting positions for a large number of MTs
v2.5.10
- Critical Bugfix: [qd_layout.set_scenario] Wrong LOS / NLOS states were assigned when using spatial consistency for multiple BSs
- Bugfix: [qd_layout.set_scenario] Decorrellation distance for RMa should be 60 according to 3GPP TR 38.901 v16.1.0, Table 7.6.3.1-2
- Performace: [qd_layout.set_scenario] Improved execution speed assigning parameters to a large number of terminals
- Performace: [qd_layout] Speedup for setting TX and RX positions directly in the Layout
v2.5.9
- Feature: [qd_builder.add_sdc] Added method to add semi-deterministic clusters to a builder
- Feature: [qd_builder.get_pl] Added option to calculate PL without evaltrack (use [x;y;z] instead)
- Feature: [qd_buillder.gen_fbs_lbs] Added optimal input parameter to adjust the Per-cluster AS for each cluster individually
- Bugfix: [qd_builder.get_channels] crashed when GR was enables in the scenario parameters but no GR path was defined in the SSF parameers
v2.5.8
- Feature: Enabled ground-reflection simulations for 3GPP-Baseline scenarios
- Bugfix: [qd_builder.gen_lsf_parameters] Removed warning for ground-reflecion being not available in 3GPP baseline (it is now available)
- Bugfix: [qd_builder.gen_ssf_parameters] Removed warning for ground-reflecion being not available in 3GPP baseline (it is now available)
- Bugfix: [qd_builder.get_channels] Removed warning for ground-reflecion being not available in 3GPP baseline (it is now available)
- Bugfix: [qd_builder.init_sos] Removed warning for ground-reflecion being not available in 3GPP baseline (it is now available)
- Bugfix: [qd_builder.get_channels] Did not correctly apply dynamic SF and KF profiles when "add_paths" was used
v2.5.7
- Bugfix: [qd_builder.copy] did not correctly copy recursive handles of arrays and SOS generators
- Bugfix: [qd_builder.gen_fbs_lbs] did not process frequency-dependent cluster-delays
- Bugfix: [qd_builder.gen_lsf_from_ssf] did not handle zero-power GR path correctly
- Bugfix: [qd_builder.gen_lsf_parameters] crashed when SSF spatial consistency was disabled and absTOA was enabled
- Bugfix: [qd_builder.gen_ssf_from_scatterers] returned incorrect GR-EoA angle in some rae cases
- Bugfix: [qd_builder.init_sos] did not initialize the subpath coupling correctly when NumSubPaths differs from "scenpar"
- Bugfix: [qd_builder.split_rx] did not split array antennas correctly in case of mutiple frequencies
- Feature: [qd_builder.add_paths] New method to combine parameters of several different scenario configurations
- Feature: [qd_builder.check_los] New method to obtain the LOS state of a builder
v2.5.6
- Bugfix: [qd_builder.gen_fbs_lbs] increased robustness
- Feature: [qd_builder.gen_lsf_parameters] Added option to calculate LSF parameters for arbitrary positions
- Cleanup: [qd_builder.gen_cdl_model] Updated to new "gen_fbs_lbs" method
- Cleanup: [qd_builder.get_lsp_map] Updated to new "gen_lsf_parameters" method
- Cleanup: [qd_builder.get_sf_profile] Updated to new "gen_lsf_parameters" method
v2.5.5
- Bugfix: [qd_layout.layout2kml] did not write correct segment tags when used in combination with pairing
- Feature: [qd_layout] Added property "ReferenceCoord" for reading and writing KML files
- Feature: [qd_builder,check_dual_mobility] Added option to disable warning messages
- Feature: [qd_builder.gen_lsf_parameters] Generates the large-scale-fading parameters for all terminals and frequencies
- Feature: [qd_builder.gen_ssf_parameters] Generates the small-scale-fading parameters for all terminals and frequencies
- Feature: [qd_builder.gen_lsf_from_ssf] Calculates the LSF parameters from existing SSF parameters
- Feature: [qd_builder.gen_fbs_lbs] Added explicit method to generate the positions of the FBS and the LBS
- Feature: [qd_builder.gen_ssf_from_scatterers] Calculates the SSF parameters from existing FBS and LBS positions
- Cleanup: [qd_builder] removed properties "gamma" and "kappa" for the polarizaion change during scattering. Instead, the variable "xparmat" now contains the complete polarization transfer amtrix
v2.5.4
- Bugfix: [qd_builder.gen_parameters] did not correctly calculate ground reflection polarization
- Bugfix: [qd_builder.gen_parameters] did not remove the first NLOS cluster delay before applying absolute TOA offsets
- Feature: [qd_sos.remove_bias] added function to remove bias from SOS generators for given positions (enforce Normal distribution)
- Feature: [qd_sos.val] added option to use different phases as input
- Feature: [qf.calc_xpr] Added heler function to calculate XPR from polarization transfer matrix
- Feature: [qd_builder.copy] Added missing copy function to builder
- Feature: [qd_builder.get_lsp_from_ssp] Added function to calculate LSPs from SSPs
- Feature: [qd_builder] Restructured property layout for better readability
v2.5.3
- Bugfix: [qd_builder.get_pl] Crashed when default variables were not correcly initialized for "dual_slope" and "tripple_slope" models
- Performace: [qd_arrayant.interpolate] Vectorized array interpolation function to improve performance
- Feature: [qd_arrayant.calc_phase_diff] calculates the maximum phase difference between two samples in the arrays
v2.4.2
- Critical Bugfix: [qd_builder.supported_scenarios] did not return any results on Windows due to different format of the path-variable - Backport to v2.4.0
- Bugfix: [qd_channel.merge] crashed when "qd_channel.par.pg" did not have one vale per snapshot
- Bugfix: [qd_mesh] default material setting caused negative attenuation (amplification) when a ray passed through an objectes
v2.4.1
- Bugfix: [qd_builder.get_pl] returned NaNs for dual-slope PL model when MT was at the environment height
- Bugfix: [qd_builder.visualize_clusters] crashed when creating 2D-Plots
- Performace: [qd_builder.get_channels] Improved Performance by a factor of 3
- Feature: [qd_builder.gen_parameters] Added explicit generation of polarization transfer matrix

v2.4.0
(Release: 2020-10-09)

v2.4.0
- Bugfix: [qd_satellite.init_tracks] crashed when satellite names were not defined.
- Performace: [qd_track] removed uneccessary computation steps to increase the speed of adding or modifying users in a layout2kml
- Feature: Added configuration files for satellite links
v2.3.6
- Bugfix: [qd_builder.supported_scenarios] did not find the scenario files if quadriga_src was found more than once on the MATLAB path
- Bugfix: [qd_builder.supported_scenarios] replaced filesep constructs by fullfile call in order to have the right number of file separators
- Bugfix: [qd_builder.set_scenario_table] replaced filesep constructs by fullfile call in order to have the right number of file separators
- Bugfix: [qd_layout.power_map] fixed error in the description of the method
- Bugfix: [qd_layout.set_scenario] crashed when assigning automatic LOS/NLOS/Indoor stated to layouts with only 1 MT
- Feature: [qd_channel.fr] added option to perform comutation on GPU
- Performance: [qd_channel.fr] computes up to 30% faster on CPU for large bandwidths
- Performance: [qd_layout.get_channels] Removed default builder splitting to improve performace for cases where all channels are geertated at once
- Performance: [qd_layout.get_channels_seg] builder splitting is only done when "get_channels_seg" is called the first time
v2.3.5
- Bugfix: [qf.calc_angular_spread_sphere] did not consider roll angle in AS and ES output
- Bugfix: [qd_builder.supported_scenarios] did not find the scenario files if quadriga_src was the first entry on the MATLAB path
- Bugfix: [qd_builder/private/generate_paths] crashed in older matlab version (e.g. R2011b)
- Bugfix: [qd_builder/private/clst_expand] crashed in older matlab version (e.g. R2011b)
- Bugfix: [qd_track.interpolate] interpolation of the orientation was done with single precision only - leading to inaccurate results
- Feature: [qd_layout.randomize_rx_positions] added options to set a minimum distance and a fixed MT orientation
v2.3.4
- Interface change: [qd_layout.get_channels] removed "update_rate" from liste of input parameters. This is now controlled by the parameter "qd_layout.update_rate"
- Bugfix: [qd_builder.get_pl] output NaNs when using dual-slope PL model and same TX and environment heights
- Bugfix: [qd_builder.split_multi_freq] did not set the "scenario" name correctly
- Bugfix: [qd_builder.split_rx] did not set the "scenario" name correctly
- Bugfix: [qd_builder.supported_scenarios] caused many warning messages in Octave
- Bugfix: [qd_channel.interpolate] poor performace due to single-precision interpolation (only 3 correct decimal digits for repeated channel generateions). Fixed by using double precision
- Bugfix: [qd_channel.merge] crashed when inupt array of "qd_channel" obejects was not correctly formatted
- Bugfix: [qd_channel.merge] did not return last snapshot for closed tracks
- Feature: [qf.slerp] Added option to use double precision instead of single precision
- Feature: [qd_builder.gen_parameters] added option to reuse parameters and onyl create missing ones
- Feature: [qd_layout.get_channels_seg] added option to generate channles sement-by-segment
- Feature: [qd_layout.get_channels] Added option to pre-initiaize the "qd_builder" opjects (needed for "get_channels_seg")
- Feature: [qd_layout] Added internal variable to store pre-initialized channel builders
v2.3.3
- Bugfix: [qd_sos.val] precision was limited to 1e-6 (single precision); caused errors in opther modules due to error propagation; fixed by usind double precision
- Bugfix: [qd_builder.get_sf_profile] crashed due to missing dual-mobility flag
- Bugfix: [qd_builder.get_lsp_map] crashed due to missing dual-mobility flag
v2.3.2
- Bugfix: [qd_builder.gen_parameters] wrong parameters when calling "split_rx" followed by "gen_parameters" in dual-mobility mode
- Bugfix: [qd_builder.split_multi_freq] did not process absTOA_offset variables
- Bugfix: [qd_builder.split_rx] did not work correctly in multi-frequency mode
- Bugfix: [qd_track.add_segment] did not correctly output d_min variable
- Bugfix: [qd_track.interpolate] did not update the input track when no output variable was requsted
- Feature: [qd_satellite.read_tle] Added method to read TLE data
- Feature: [qd_satellite] Added option to calculate and visualize satellite positions in real time
- Updated documentation
v2.2.11
- Bugfix: [qd_track.add_segment] Segment adding failed when projection was at the edge of a track segment but still within threshold
- Feature: [qd_arrayant.import_pattern] Re-added method and added interpolation function for the azimuth grid.
v2.2.10
- Feature: Added InF model from 3GPP TR 38.901 V16.1.0
- Feature: [qd_builder.gen_parameters] changed sub-path splitting such that only the 2 stongest clusters are split when spatial consistency is not used
- Feature: [qd_builder] Added absolute TOA model from 3GPP TR 38.901 V16.1.0, Sec. 7.6.9
- Feature: [qd_layout.layout2kml] Added option to write abolute heights
v2.2.9
- Bugfix: [qd_arrayant.xml_read] crashed when values were given in exponential notation
- Bugfix: [qd_builder/generate_paths] created wrong angles when the Tx was at high elevation
- Bugfix: [qd_builder.visualize_clusters] wrong axis scaling for high elevation angles
- Bugfix: [qd_track.add_segment] added segments to multiple tracks in a track array
- Bugfix: [qd_track.interpolate] cause division by zero and NaN output using "time" interpolation and sample rates outside the movemelt profile range
- Feature: [qd_arrayant.beam_explorer] Added console output several parameters describing the antenna when clicked at the image
- Feature: [qd_channel.clear_par] Added option to remove selected "par"-entries
- Feature: [1d_channel.swap_tx_rx] Added method to replace tx and rx positions on the output channel
v2.2.8
- Bugfix: [qd_builder.split_multi_freq] crashed when splitting a builder with an empty kappa variable
- Bugfix: [qd_channel.propsim_export_v2] Did not write source file to SMU file when using asc_raw output format
- Bugfix: [qd_channel.quantize_delays] created false delays when running on already quantized channels
- Feature: [qf.regression] Added option to roudnd output to x.2 and x.5
- Feature: [qd_builder.split_rx] Added option to split builders for separate RX locations
- Feature: Updated parameters for 3GPP TR 37.855 V2V simulations
v2.2.7
- Bugfix: [qd_builder/private/solve_multi_bounce_opti] did not use the correct minimum distance when calculating the FBS and LBS positions
- Bugfix: [qd_track.interpolate] crashed when interpoalting zeros-length tracks
- Feature: [qd_channel.quantize_delays] added option to fix delays
- Feature: [qd_builder.gen_cdl_model] Added 3GPP TR 37.885 V2X CDL models
- Feature: [qd_builder.get_channels] now saves the update rate
- Feature: [qd_builder.set_fbs_lbs] added option to import LBS and FBS positions and adjust LSPs and SSPs accordingly
- Feature: [qd_layout] now allows to manuallly enable dual-mobility (i.e. for spatially consistend BSs)
- Performance: [qd_channel.propsim_export_v2] does not write duplicate files for return channels
v2.2.6
- Bugfix: [qf.acdf] did not calculate quantiles for single dimension input
- Bugfix: [qd_builder.check_dual_mobility] did not process rx locations correctly when there was a single rx track but multiple rx positions
- Bugfix: [qd_builder.get_channels] did not return the correct cluster angles and powers if there were zero-power paths
- Bugfix: [qd_layout] changed the default track length to 0
- Bugfix: [qd_track.interpolate] could have an inconsistent number of output snapshots for the same input values (track lenght and samplerate)
- Bugfix: [t01_handles_handels_handles] calculation of the received power was wrong
- Feature: [qd_channel.calc_cap_multiuser] added option to calculate the per-stream SINR
- Feature: [qd_channel.propsim_export_v2] added option to write channel coefficients without normalization
- Feature: [qd_track.calc_orientation] added option to correctly change the orientation in 3D coordinates
- Feature: Added calibration tutorial for 3GPP TR 38.821 (non-terrestrial networks)
v2.2.5
- Performance: [qd_channel.split_tx] Removed output of zero-power paths from split channels
- Feature: [qd_channel.split_rx] Splits channel arrays based on receive antenna indices
- Feature: [qd_channel.propsim_export_v2] Added option to return quantized channel coefficients
v2.2.4
- Performace: [qd_builder.get_channels] does not process paths with zero-power to reduce computing and memory reuirements
- Feature: [qd_layout.kml2layout] added option to set a specific reference coordinate different from the one in the KML file
v2.2.3
- Bugfix: [qd_builder.get_sf_profile] created random shadowing profile when there was no qd_builder.sos object
- Bugfix: [qd_builder.get_channels] caused NaNs when there was no qd_builder.sos object
- Bugfix: [qd_channel.interpolate] crashed when there was a scalar PG value
- Bugfix: [qd_layout.kml2layout] did not rorreclty read closed tracks due to numeric precision error
- Bugfix: [qd_layout.layout2kml] did not write some non-default orientation values to the file
v2.2.2
- Bugfix: [qf.calc_angles] Caused division by 0 message if there were zero-power paths in the channel opject
- Bugfix: [qd_layout.kml2layout] Crashed when there were no segments defined in the KML file
- Bugfix: [qd_layout.kml2layout] Crashed when there was a single TX antenna and multiple RX antennas defined for only a single frequency
- Performance: [qf.calc_ant_rotation] Added option to use single precision for up to 30% performance increase
- Performance: [qd_arrayant.combine_pattern] Added option to use single precision for up to 30% performance increase
- Performance: [qd_arrayant.interpolate] Various performance enhancements
- Performance: [qd_builder.get_los_channels] Increased performance for single precision by removing unneccessary typecasts
- Feature: [qd_arrayant] Added antenna type 'testarray' - an antenne with optimal angular resolution for QuaDRiGa testing
- Feature: [qd_builder] Added subpath mapping method 'Laplacian'
- Feature: [qd_builder.gen_cdl_model] Added 3GPP 38.901 CDL and TDL models
v2.2.1
- Bugfix: [qd_layout.copy] crashed when copying a layout with multiple transmitters or receivers
- Bugfix: [qd_builder.get_pl] created wrong SF scaling coefficien when SF was frequency-dependent
- Bugfix: [qf.log2dfit] crashed when negative values for a or b were entered
- Bugfix: [qd_channel.calc_tx_rx_distance] crasehd when tx was moving
- Bugfix: [qd_builder.check_dual_mobility] crashed when tx and rx were co-located and had only 1 snapshot
- Bugfix: [qd_builder.get_channels] did not update rx patterns in some rare cases
- Bugfix: [qd_channel.merge] crashed when there were more than 65535 channel segments
- Bugfix: [qd_channel.interpolate] terminal positions were inaccurate for long tracks due to single precision interpolation
- Bugfix: [qd.track.interpolate] inaccurate positions for long tracks due to single precision interpolation
- Performance: [qd_arrayant.wrap_grid] Performace improvements
- Performance: [qd_channel.quantize_delays] improved performace and added option to select subset of channels
- Feature: [qd_arrayant.generate] Added option to generate multibeam parabolic antennas
- Feature: [qf.interp] Added option to use double precision for interpolation
- Feature: [qd_arrayant.calc_beamwidth] Added method to calculate the per-elemet beamwidth and pointing angle
- Feature: [qd_arrayant.rotate_pattern] Added option to rotate patterns without grid interpolation
- Feature: [qd_arrayant.set_grid] Added option to disable interpolation
- Feature: [qd_builder.init_sos] Added option to disable spatial consistency
- Feature: [qd_layout.get_channels] now writes update rate to channel objectes par-struct
- Feature: [qd_layout.set_scenario] added 5G-ALLSTAR scenarios
- Feature: [qd_simulation_parameters] added option to disable spatial consistency
- Update: Renames satellite configuration files to 5G-ALLSTAR
- Update: Adjusted 5G-ALLSTAR DenseUrban parameters after resimulation

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