
                                README

              RFI (Radio Frequency Interference) Mitigation
                            MATLAB ToolBox

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

                          DATE: April 11, 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.4.1 beta) supports the generation 
of Middleton Class A, Symmetric Alpha Stable,  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.4.1 beta) 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 (ver. 1.4.1 beta) adds a new demo for statistical modeling 
of RFI [6], [9] which can also be used as a tool for statistical modeling of measured 
interference datasets.


Installation
_____________

The current version (ver 1.4.1 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.4.1 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
 

Version Updates and Bug Fixes
______________________________

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