                                                                     
                                                                     
                                                                     
                                             

                                 README

                 RFI (Radio Frequency Interference)
                  Modeling and Mitigation ToolBox

               Marcel Nassar (nassar@ece.utexas.edu)
               Kapil Gulati  (gulati@ece.utexas.edu)	

                       DATE: April 1, 2011

Contents
_________

* Introduction
* Features
* Installation
* Theory and Background Information
* Compatibility
* Bug Reports and Feedback
* Version Updates and Bug Fixes
* References


Introduction
_____________

The toolbox could be used by a system engineer for platform analysis/design and a communications 
engineer for wireless network performance analysis, e.g. to 

* generate RFI noise/interference 
* fit measured RFI data to statistical models 
* quantify impact of RFI on standard receivers
* achieve communication performance improvement using RFI mitigation techniques.
 
Using RFI modeling and mitigation, 1-2 orders of magnitude of improvement in communication 
performance is possible both at the physical layer (via reduction in bit error rate) and at 
the medium access control layer (via increase in throughput) [10]. 

Features
________

Our RFI modeling and mitigation toolbox enables the generation and parameter estimation [2][3][4] 
of time series for the following impulsive distributions: 

* Symmetric Alpha Stable model 
* Middleton Class A model 
* Gaussian Mixture model 

We have used the toolbox to fit measured RFI data [6][7][8][9]. 

The toolbox also generates the following time series: 

* Multivariate isotropic Symmetric Alpha Stable model 
* Multivariate isotropic Middleton Class A model 
* Multivariate Gaussian mixture model 

The toolbox implements several impulsive noise reduction filters: 

* Middleton prefiltering [1] 
* Myriad filtering [5] 

In communication systems, the toolbox can be also used to design discrete-time signal processing 
algorithms at baseband for RFI-aware transceivers by using easy-to-use GUI tools built on top of 
RFI modeling and mitigation algorithms. The toolbox supports single-transmitter single-receiver (1x1) 
systems, as well as two-transmitter, two-receiver (2x2) systems. For 1x1 communication systems, 
the toolbox uses pulse amplitude modulation (PAM). Receiver choices are correlation detection, 
Wiener filtering followed by correlation detection, optimal Bayes detection [1], and the small-signal 
approximation of optimal Bayes detection [8]. For 2x2 communication systems, the toolbox uses 
quadrature amplitude modulation (QAM). Transmission uses either spatial multiplexing or Alamouti coding. 
Reception choices include Gaussian maximum likelihood (ML), zero forcing, Middleton Class A ML, and 
suboptimal Middleton Class A ML receivers. [6] 


Installation
_____________

The current version (ver 1.6) of the RFI Mitigation toolbox does not contain a stand alone installer. 
To install it, copy the RFI directory to your toolbox directory in the MATLAB folder. For example assume 
that the MATLAB is installed in C:\Program Files\MATLAB. Then a possible destination directory can be 
C:\Program Files\MATLAB\toolbox. After moving the rfitoolbox directory to the destination directory, the 
following command should be executed to add the RFI toolbox to your MATLAB path.

addpath(genpath('C:\Program Files\MATLAB\R2007a\toolbox\rfitoolbox'));

Here, please replace 'C:\Program Files\MATLAB\R2007a\toolbox\' with the 
directory to where you copied the rfitoolbox folder.

Note: The current version contains a main gui which can be used to run all other demos included in the 
release. The main demo can be started by typing 'RFI_StartDemos' on the MATLAB command prompt after 
doing the aforementioned installation procedure. 

Theory and Background Information
__________________________________

The theory and the background information are given in an online report and
presentation that can be found at the following links:

Report:
http://users.ece.utexas.edu/~bevans/projects/rfi/reports/RFIReportSpring2007.doc

Presentation:
http://users.ece.utexas.edu/~bevans/projects/rfi/talks/Dec2010RFIMitigationSlides.pptx

Compatibility
______________

This toolbox has been tested in Matlab 7.0 and 7.1. The following toolbox dependencies exist and are 
needed for the toolbox to run properly:

	Command                 Toolbox
	--------                --------
	* qammod, qamdemod      Communication Toolbox
	* pammod, pamdemod      Communication Toolbox
	* moment                Statistics Toolbox
	* rcosine               Communication Toolbox
	* xcorr                 Signal Processing Toolbox
	* random                Statistics Toolbox
	* randsample            Statistics Toolbox
	* ksdensity             Statistics Toolbox
	* mvnpdf                Statistics Toolbox
	* mvnrnd                Statistics Toolbox
 

Version Updates and Bug Fixes
______________________________

Version 1.6
----------------
* Validated the 1.6 beta release and made a full release.


Version 1.6 beta
----------------
* Added support of generating multidimensional (isotropic) data distributed according to symmetric 
  alpha stable distribution (RFI_MakeDataAlphaStable) and Middleton Class A distribution 
  (RFI_MakeDataClassA, RFI_MakePDFClassA, and RFI_MakeEnvelopeDataClassA).
* Added a new demo (RFI_OFDMDemo) for analyzing the communication performance of OFDM receivers 
  in the presence of RFI. This demo is not included in main demo (RFI_StartDemos) and is expected 
  to be integrated with the RFI_DemoSISO demo in the future release.
* Added tooltips and help buttons to the demos for ease of usability.


Version 1.5
------------
* Added small signal approximation for Gaussian mixture pdfs.
* Added RFI_GMnonlinearity to support the small signal approximation for Gaussian mixture.
* Changed the arguments for RFI_detect_appx, RFI_bi_detector_appx, RFI_detect_opt, RFI_nonlinearity 
  and RFI_bi_detector for a more general implementation and support for small signal approximation 
  for Gaussian Mixture.
* Replaced randint with randi in RFI_gen_binary_mod. ranint will not be supported in future versions 
  of the communications toolbox.
* Fixed major bugs in the file transmission option in the SISO demo. Now, it works well when Bayesian 
  and small signal approximation are chosen with class A and Gaussian mixture noise distributions.
* Fixed a minor bug that indicated that there was no detection method selected when Gaussian mixture 
  model was selected and the method was Bayesian detection.
* Fixed a minor option's display bug for Gaussian mixture noise models.



Version 1.5 beta
-----------------
* Merged the file transfer demo and the SISO demo. As a result, the SISO demo now contains the 
ability to specify a file as a source of the simulation data.
* Added RFI_MakeDataGMM.m, RFI_MakePDFGMM.m, and RFI_EstParamsGMMwithEM.m to the toolbox to generate
Gaussian model noise data, the PDF of the Gaussian mixture model, and to fit a given noise vector to 
a Gaussian mixture model.
* Added Gaussian mixture capability to the Statistical Modeling demo.
* Added partial support for Gaussian Mixture models to the SISO demo.
* Added tips and help for some fields that show upon moving the mouse on top of those corresponding
fields.

Version 1.4.1 beta
----------------
* Added a new overview demo, 'RFI_DemoModelingAndMitigation', for statistical modeling and 
  mitigation of RFI is single-input single-output systems
* Added the 'export estimated parameters' feature to RFI_DemoStatisticalModeling demo
* Added the 'import estimated parameters' feature to RFI_DemoSISO, RFI_DemoTwoByTwoMIMO,
  and RFI_DemoFileTRSF demos.


Version 1.4
----------------
* Validated the 1.4 beta release and made a full release.
* Added a browse button to choose input and output file in the RFI_DemoFileTRSF demo


Version 1.4 beta
----------------
* Updated the demo RFI_DemoSISO to support M-PAM modulation (previous versions 
  supported only 2-PAM).
* Updated the function RFI_MakeDataAlphaStable to support generation of skewed alpha 
  stable random variable.
* Fixed a minor bug in the function RFI_CalcKLDiver for robustness in calculating 
  KL divergence.


Version 1.3
-----------
* Validated the 1.3 beta release and made a full release.


Version 1.3 beta
----------------
* Added a demo (RFI_DemoStatisticalModeling) which provides a simulation environment for 
  statistical modeling of RFI. The demo can also be used as a tool for modeling measured 
  RFI datasets.
* Added a demo (RFI_StartDemos) which is the main demo from which all other demos can be
  launched.
* Added function to evaluate the probability density function of a bivariate Middleton 
  Class A random variable.
* Added a function (RFI_kde2d) which performs 2-D kernel density estimation. The function
  is renamed from the original 'kde2d' to avoid clashes with other functions with the same 
  name. Copyright information regarding the redistribution of this function has been added
  as comments in the function.
* Added a function to evaluate the KullbackLeibler (KL) divergence between two 1-D or 
  2-D probability density functions (PDFs). This is used by the new demo 
  RFI_DemoStatisticalModeling and is placed in the ./RFIDemos/AuxFunctions/ directory.
* Added a short help and description file for all exiting demos in this toolbox. These
  can be viewed as help dialogs through the new main demo added (RFI_StartDemos). All help
  files are placed in ./RFIDemos/DemoHelpFiles/ directory and are in .txt format.
* Fixed a typographical bug in the demo RFI_DemoTwoByTwoMIMO related to the calculation of
  noise variance.
* Removed the sample .avi file (einstein.avi) that was present in releases 1.2 and 1.2.1.


Version 1.2.1
-------------
* Fixed a bug in RFI_MakePDFClassA where the input parameter M was getting reassigned.

Version 1.2
------------
* Added a new demo for file transmission across the an impulsive channel with alpha stable
  noise and class A middleton noise, with some video transmission capability (still in beta).
* Added function to support this demo are: RFI_getANDmodFDATA.m and RFI_decANDwrtFDATA.m .

Version 1.2 beta
----------------
* Added functions for generation of bivariate Middleton Class A noise.
* Modified the Middleton Class A noise generators for improved computational performance.
* Added functions to implement 2x2 MIMO receivers in the presence of Gaussian and bivariate 
  Middleton Class A noise. 
* Added demo for a 2x2 MIMO system in the presence of RFI: RFI_DemoTwoByTwoMIMO
* Added small signal approximation, quantized pdf implementation of the Bayesian detection
  in the presence of Middleton Class A noise

Version 1.1 beta
----------------
* Added Myriad functions RFI_myriad_apx, RFI_myriad_opt, RFI_myriad_res,
  RFI_detect_myriad.
* Added a demo illustrating the performance of these methods in the 
  presence of alpha stable noise: rfidemo_rx_alpha.
* Fixed the fact that S(alpha,disper,delta) = disper ^ (1/alpha) * S(alpha, 1, 0) + delta
  in RFI_EstAlphaS_Dispersion function. The implemented equation for the dispersion estimator
  is modified accordingly and is now in-sync with [2].
* Fixed the fact that S(alpha,disper,delta) = disper ^ (1/alpha) * S(alpha, 1, 0) + delta in
  RFI_MakeDataAlphaStable. Previously, this function was incorrectly implemented using 
  disper * S(alpha,1,0) + delta. Corresponding changes have been made to the estimator for 
  dispersion parameter.
* Removed the old implementation of RFI_NoiseSamplesClassA, and made this function just an 
  encapsulation for RFI_makeScalarPDFClassA and RFI_makeScalarNoiseClassA_pdf (written by 
  DeYoung) to improve computational performance.
* Implemented a recursive implementation of RFI_ClassApdf that improves performance and 
  increases the range of usable As.
* Added an alpha stable noise option to the Communication Performance Demo.


Bug Reports and Feedback
_________________________

For bugs and feedback, email me at nassar@ece.utexas.edu.


References
___________

 [1] A. Spaulding and D. Middleton, Optimum reception in an impulsive interference environment-part I: 
     Coherent detection, IEEE Transactions on Communications, vol. 25, no. 9, pp. 910923, 1977.

 [2] G. A. Tsihrintzis and C. L. Nikias, "Fast estimation of the parameters of alpha-stable impulsive interference", 
     IEEE Transactions on Signal Processing, vol. 44, no. 6, pp. 1492-1503, June 1996.

 [3] D. Middleton, Procedures for determining the properties of the first-order canonical models of Class A 
     and Class B electromagnetic interference, IEEE Transactions on Electromagnetic Compatibility, vol. 21, pp. 190-208, Aug. 1979.

 [4] S. M. Zabin and H. V. Poor, Efficient estimation of Class A noise parameters via the EM 
     [Expectation-Maximization] algorithms, IEEE Transaction on Information Theory, vol. 37, no. 1, pp. 60-72, Jan. 1991.

 
 [5] J.R. Gonzalez and G.R. Arce. "Optimality of the myriad in practical impulsive-noise environments," 
     IEEE Trans. on Signal Processing, vol 49,no.2, pp. 438-441, February 2001.

 [6] K. Gulati, A. Chopra, R. W. Heath, Jr., B. L. Evans, K. R. Tinsley, and X. E. Lin, "MIMO Receiver Design 
     in the Presence of Radio Frequency Interference", Proc. IEEE Int. Global Communications Conf., 
     Nov. 30-Dec. 4th, 2008, New Orleans, LA USA.

 [7] M. Nassar, K. Gulati, A. K. Sujeeth, N. Aghasadeghi, B. L. Evans and K. R. Tinsley, "Mitigating 
     Near-Field Interference in Laptop Embedded Wireless Transceivers", Proc. IEEE Int. Conf. on Acoustics, 
     Speech, and Signal Proc., Mar. 30-Apr. 4, 2008, Las Vegas, NV USA. 

 [8] M. Nassar, K. Gulati, M. R. DeYoung, B. L. Evans and K. R. Tinsley, "Mitigating Near-Field Interference 
     in Laptop Embedded Wireless Transceivers," Journal of Signal Processing Systems, 2009. 
     Available: http://dx.doi.org/10.1007/s11265-009-0350-7.

 [9] K. Gulati, A. Chopra, B. L. Evans, and K. R. Tinsley, "Statistical Modeling of Co-Channel Interference", 
     Proc. IEEE Int. Global Communications Conf., Nov. 30-Dec. 4, 2009, Honolulu, Hawaii.