All files in the analysis output were generated with MATLAB 2019b and is in "mat" format. They can be opened using the freely available Python package "scipy".
An example script that opens a "mat" file is:
import scipy.io as sio
mat = sio.loadmat('jones_met_radar_s1_seeds.mat')
After this line all the data available in MATLAB is also accessible in Python as numpy arrays arranged in dictionaries according to the fields of the MATLAB struct.
Below are descriptions of each type of file individually.
{radar name}_s{k0 index}_snr_sweep_ambig_results.mat
=====================================================
This file contains a structure called "results". This is the output from the DOA ambiguity analysis and Monte-Carlo simulations of DOA determination. The "result" struct has the following fields:
inclusion_radius: The radius used to include a DOA determination output to the corresponding matrix element in discretization.
output_points: Compiled list of first and second order ambiguities to the chosen k0.
output_distances: List of all distances between first and second order ambiguities and the chosen k0
all_distances: Ambiguity function values of all_points.
all_points: Complete list of ambiguities (i.e. first and second order). Low probability ambiguities are filtered away and the list is sorted to create the output_points fields.
seeds: Chosen ambiguities to k0.
seeds_d: Ambiguity function values between chosen ambiguities and k0.
ambiguity_list_points: List of ambiguities to each of the seeds.
ambiguity_list_distances: List of ambiguity function values between the seeds ambiguities and the seeds.
k0: The chosen k0.
SNRdB: The SNRs used in dB for each Monte-Carlo iteration. The SNR was set to a distribution to emulate the measurements so for each "seed" there is a vector of SNRs that describe the injected noise in that DOA determination.
seed_n: Number of chosen ambiguities to k0
dists: DOA determination Monte-Carlo iteration data for each seed as input DOA and for each SNR. This is the "raw" output of the simulation.
P: Calculated probability matrices as a function of SNR using the inclusion_radius, output_points and the dists variables.
peaks: Distribution of MUSIC peak value for each Monte-Carlo iteration.
The dists variable is structured as (when loaded with scipy)
mat['result']['dists'][0][0][SNR vector index][Input DOA index][k vector xyz, Monte Carlo iteration]
in the configuration the snr vectors for k0 are structured as
radars['configs'][0,radar index][0]['SNRdB_vectors'][0][0][k0 index][0,SNR index]
To plot raw Monte Carlo results of SNR index 4 of k0 index 0 which is at SNR -23.10344827586207
plt.plot(mat['result']['dists'][0][0][4,0][0,0][0,:], mat['result']['dists'][0][0][4,0][0,0][1,:], '.')
radar_configurations.mat
================================
is a (1,10) array when loaded with scipy.
Each is one of the radar systems examined and the configuration used in the simulations
the data is structured as:
radars['configs'][0,radar index][0][configuration variable]
{radar name}_radar_inner_res_{grid size}_seed_sweep.mat
=========================================================
Sweep of ambiguity analysis without Monte Carlo simulation, just containing the ambiguity distances and points
used to create the maximum ambiguity inner product map as a function of input DOA.