Back to CReSIS Toolbox Guide [Simulator](CReSIS Toolbox Guide) section.
[[_TOC_]]
# Overview
The cross-track simulator is a wide band 2-D simulator (narrowband is simulated by reducing the bandwidth sufficiently). Only point targets are supported and some functions for creating surfaces of point targets are available. SNR, snapshots, and simulation runs can be controlled. The snapshots are fed from a two dimension array so that this simulator supports a pseudo-3D view of the world. Resolution in the third dimension is perfect though and no SAR processing needs to be done on the simulated data; the simulated data could be viewed at simulated SAR data as opposed to simulated 3D raw phase history data.
The cresis toolbox array processor, array_proc.m, is used to call MUSIC, MLE, WBDCM, and WBMLE direction of arrival estimation routines. A special update function sim.array_proc_update.m can be used to update the result.
# Functions
All functions are in the sim package so to call the script crosstrack_example_wax, you would run "sim.crosstrack_example_wax".
|Function| Description|
|-------------|------------|
|array_proc_update.m| Function for updating the cost function after perturbing an array_proc.m result.|
|[crosstrack_data.m](Cross Track Simulator) | Creates 2-D simulated radar data specifically for testing array processing algorithms. This is equivalent to SAR-processed data where there is no contamination or interference from other along track targets (i.e. resolution in along track is perfect). Noise is assumed to be complex gaussian. Snapshots can be drawn from neighboring range lines which are all uncorrelated. Snapshots can also be drawn from neighboring range bins and these will contain some correlation based on the window and other fast-time simulation parameters.|
|[crosstrack.m](Cross Track Simulator) | This is the cross-track 2D elevation angle estimation function. It creates the data with crosstrack_data.m and processes the data with array_proc.m.|
|crosstrack_example_array_calib.m| Example array calibration simulation. Calls crosstrack.m and crosstrack_rmse.m.|
|crosstrack_example_array_errors.m| Example array calibration errors simulation. Calls crosstrack.m and crosstrack_rmse.m.|
|crosstrack_example_ins.m| Example inertial navigation system (INS) simulation; specifically roll. Calls crosstrack.m and crosstrack_rmse.m.|
|crosstrack_example_moe.m| Example model order estimation simulation. Calls crosstrack.m and crosstrack_rmse.m.|
|crosstrack_example_multipath.m| Example multipath and mutual coupling simulation. Calls crosstrack.m and crosstrack_rmse.m.|
|crosstrack_example_pf.m| Example particle filter simulation. Calls crosstrack.m and crosstrack_rmse.m.|
|crosstrack_example_rds.m| Example narrowband radar depth sounder simulations. Calls crosstrack.m and crosstrack_rmse.m.|
|crosstrack_example_snow.m| Example snow radar simulation. Calls crosstrack.m and crosstrack_rmse.m.|
|crosstrack_rmse.m| Function for collating results from crosstrack.m for plotting and reporting.|
# array_proc_update.m
# crosstrack_data.m
# crosstrack.m
The function structure is:
```
**[results] = crosstrack(param)**
```
The fields in param are described in doa.m, the 1D simulator. The fields that are different are:
|Parameter |Description|
|--------------|------------|
|monte.target_param| monte.target_param is an a cell array of structures. The fields of this structure are as follows: **.z:** It is a parameter structure describing the statistics of the layer height (mean, rms height, correlation length, probability density function) with the following fields:.mean.rms_height .corr_length_x.corr_length_y **.x:** A row vector having the information of Along-track positions in meters. **.y:** A column vector having the information of Cross-track positions in meters. **.x_range:** It specifies the range of Along-track positions in meters. **.y_range:** It specifies the range of Cross-track positions in meters. **.dx:** It contains a number corresponding to distance between two successive Along-track positions in meters.**.dy:** It contains a number corresponding to distance between two successive Cross-track positions in meters.**rcs_in:** It is a parameter structure describing RCS(radar cross section) statistics such as Source mean and variance with the following fields:.mean.var|
|results| Output is contained in results and it is a structure containing the **results** from simulation runs.The fields of this structure are as follows: **.param:** It is a parameter structure with the following fields:.debug_level: A debug level of 1 or greater produces stdout output and requires tic to have been run before the command.Should be a scalar, defaults to zero (no stdout)..src: It is a structure describing signal source characteristics. For example: Center frequency, Noise power, etc,..method: It contains a number corresponding to a particular method such as Periodogram==1, MVDR==2, MUSIC==3, MLE==7 and so on..monte: It is a structure describing the monte carlo simulation setup. It contains information of simulation runs,random seed offset (scalar double usually set to zero to allow repeatability)..array_param : It is a structure containing information of number of signals, steering vectors,ranges of bins and range lines,doa_constraints(structure array restricting the DOA for each source).**.tomo** : Output of array_proc.m which takes SAR processed data as input and gives topographical data as the output.**.array_param** : Same as param.array_param, but with some additional fields added.**.sim_data** : It is 2-D simulated radar data specifically for testing array processing algorithms. (But generally it is 5-D simulated data, and the dimensions are Number of fast-time samples, Number of slow-time samples,Number of subapertures,Number of subbands and, Number of cross-track channels.) This is equivalent to SAR-processed data where there is no contamination or interference from other along track targets. (This data is generated using crosstrack_data.m).**.surf_model** : It contains the result of Array processing with basic surface extraction as x,y,z (along track, cross track and WGS-84 elevation in meters respectively).|
The outputs are:
|Parameter |Description|
|---------------|-----------|
|param| This field is an input structure which describes the simulation and testing.|
|results| This field is an output structure which contains results from simulation runs.The results structure contains field **surf_model** which contains the result of Array processing with basic surface extraction as x,y,z (along track, cross track and WGS-84 elevation in meters respectively).|
# Simulation examples
In the **crosstrack_example.m** script by changing the SNR value we can observe the following simulation results. The SNR value can be changed by varying the source power and the noise power. The source power can be varied by changing the value of the target surface parameter **surf_param.rcs_in.var** and the noise power can be varied by changing the value of source parameter **param.src.noise_power.** Given below are images of results by changing the input parameters as follows.
1. Immediate changes to crosstrack scripts: param.array_param is removed and replaced with the usual processing pipeline versions of:
- param.array
- param.array_proc
2. Not now, but we need to eventually place all simulator parameters in the .sim field. This .sim field will be used across 1D, 2D, and 3D simulators. Each version of the simulator may have different fields and may interpret the fields differently if necessary.
- param.sim.src --> Move any fields to param.radar.wfs format that can be. Any fields not specified in param.radar.wfs, will remain in this "source/src" field.
- param.sim.run --> Change "monte" to "run"
- param.sim.doa --> Change "method" to "doa". This field is only needed for 1D and 2D simulators. 3D simulator outputs will always be processed with the regular processing pipeline parameters.
- param.sim.out_path: Temporary input simulation parameters will be stored using this out_path (CSARP_sim_tmp/OUT_PATH). The simulated data will be stored in OUT_PATH. If the simulation is based on a real flight line, then the folder will be relative to the regular season output directory. If the simulation trajectory is fabricated, then the output is the user's temporary folder. For 1D and 2D simulators, there will be an additional files with the results. The file format of all files should be described in the file guide.