diff options
Diffstat (limited to 'FEAST/MIToolbox/RenyiMIToolbox.m')
-rw-r--r-- | FEAST/MIToolbox/RenyiMIToolbox.m | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/FEAST/MIToolbox/RenyiMIToolbox.m b/FEAST/MIToolbox/RenyiMIToolbox.m new file mode 100644 index 0000000..cd235e9 --- /dev/null +++ b/FEAST/MIToolbox/RenyiMIToolbox.m @@ -0,0 +1,48 @@ +function [varargout] = RenyiMIToolbox(functionName, alpha, varargin) +%function [varargout] = RenyiMIToolbox(functionName, alpha, varargin) +% +%Provides access to the functions in RenyiMIToolboxMex +% +%Expects column vectors, will not work with row vectors +% +%Function list +%"Entropy" = H_{\alpha}(X) = 1 +%"MI" = I_{\alpha}(X;Y) = 3 +% +%Arguments and returned values +%[entropy] = H_\alpha(X) = H(alpha,vector) +%[mi] = I_\alpha(X;Y) = I(alpha,vector,target) +% +%Internal RenyiMIToolbox function number +%Renyi Entropy = 1; +%Renyi MI = 3; + +if (alpha ~= 1) + if (strcmpi(functionName,'Entropy') || strcmpi(functionName,'h')) + %disp('Calculating Entropy'); + if (size(varargin{1},2)>1) + mergedVector = MIToolboxMex(3,varargin{1}); + else + mergedVector = varargin{1}; + end + [varargout{1}] = RenyiMIToolboxMex(1,alpha,mergedVector); + elseif (strcmpi(functionName,'MI')) + if (size(varargin{1},2)>1) + mergedFirst = MIToolboxMex(3,varargin{1}); + else + mergedFirst = varargin{1}; + end + if (size(varargin{2},2)>1) + mergedSecond = MIToolboxMex(3,varargin{2}); + else + mergedSecond = varargin{2}; + end + [varargout{1}] = RenyiMIToolboxMex(3,alpha,mergedFirst,mergedSecond); + else + varargout{1} = 0; + disp(['Unrecognised functionName ' functionName]); + end +else + disp('For alpha = 1 use functions in MIToolbox.m'); + disp('as those functions are the implementation of Shannon''s Information Theory'); +end |