aboutsummaryrefslogtreecommitdiff
path: root/FEAST/MIToolbox/RenyiMIToolbox.m
diff options
context:
space:
mode:
Diffstat (limited to 'FEAST/MIToolbox/RenyiMIToolbox.m')
-rw-r--r--FEAST/MIToolbox/RenyiMIToolbox.m48
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