
                                README

              RFI (Radio Frequency Interference) Mitigation
                            MATLAB ToolBox

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

                          DATE: August 16, 2010
Contents
_________

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


Introduction
_____________

The RFI Mitigation toolbox for MATLAB is designed to provide a simulation environment 
for generating radio frequency interference and quantifying the performance of various 
parameter estimation algorithms and interference mitigation algorithms. It is composed 
of various functions used to generate various types of noise statistics and to perform 
noise cancellation and detection. The current version (ver 1.5) supports the generation 
of Middleton Class A, Symmetric Alpha Stable, Gaussian Mixture, and the bivariate Middleton 
Class A random variables. For the evaluation of communication performance under the presence of the 
aforementioned noise types, the current version (ver 1.5) of the toolbox implements a 
PAM communication system with correlation detection, Wiener filtering followed by 
correlation detection, the optimal Bayes detection developed by Spaulding and Middleton [1], 
and the small-signal approximation of the optimal Bayes Detection [8]. Further the toolbox 
implements a 2x2 MIMO communication system using M-QAM modulation, spatial multiplexing 
and alamouti transmission strategies with optimal Gaussian maximum likelihood (ML) 
receiver, optimal and suboptimal ML receivers in the presence of bivariate Middleton 
Class A noise [6]. In addition to that, it implements the following parameter estimation 
algorithms: Method of Moments [3], Zabin and Poor [4], Tsihrintzis [2]. This toolbox also 
includes various demos that illustrate the usage of the implemented functions, and 
generate various results. This release contains a demo for statistical modeling of RFI [6], [9] 
which can also be used as a tool for statistical modeling of measured interference datasets. 
In addition, this new release (ver. 1.5) adds the capability to model and generate 
Gaussian Mixture noise.


Installation
_____________

The current version (ver 1.5 beta) 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 (ver 1.5 beta ) 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/Oct2009RFIMitigationSlides.ppt

Compatibility
______________

This toolbox has been tested in Matlab 7.0 and 7.1. The following 
command-toolbox dependencies exit 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.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.
