You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: MMP.m
    path of file: ./repos/MatlabFunc/SubspaceLearning
    
    the code of the file until where you have to start completion: function [eigvector, eigvalue] = MMP(gnd,feaLabel,feaUnlabel,options)
% MMP: Maximum Margin Projection
%      Semi-supervised version of LSDA (Locality Sensitive Discriminant Analysis)
%
%       [eigvector, eigvalue] = MMP(gnd,feaLabel,feaUnlabel,options)
% 
%             Input:
%               gnd     - Label vector.  
%
%              feaLabel - Labeled data matrix. Each row vector of fea is a
%                         data point. 
%            feaUnlabel - Unlabeled data matrix. Each row vector of fea is
%                         a data point. 
%
%               options - Struct value in Matlab. The fields in options
%                         that can be set:
%
%                     WOptions      Please see ConstructW.m for detailed options.  
%
%                     beta         [0,1] Paramter to tune the weight between
%                                        within-class graph and between-class
%                                        graph. Default 0.1. 
%                                        beta*L_b+(1-beta)*W_w 
%
%                         Please see LGE.m for other options.
%
%             Output:
%               eigvector - Each column is an embedding function, for a new
%                           data point (row vector) x,  y = x*eigvector
%                           will be the embedding result of x.
%               eigvalue  - The eigvalue of LPP eigen-problem. sorted from
%                           smallest to largest. 
%

    
function [eigvector, eigvalue] = MMP(gnd,feaLabel,feaUnlabel,options)
% MMP: Maximum Margin Projection
%      Semi-supervised version of LSDA (Locality Sensitive Discriminant Analysis)
%
%       [eigvector, eigvalue] = MMP(gnd,feaLabel,feaUnlabel,options)
% 
%             Input:
%               gnd     - Label vector.  
%
%              feaLabel - Labeled data matrix. Each row vector of fea is a
%                         data point. 
%            feaUnlabel - Unlabeled data matrix. Each row vector of fea is
%                         a data point. 
%
%               options - Struct value in Matlab. The fields in options
%                         that can be set:
%
%                     WOptions      Please see ConstructW.m for detailed options.  
%
%                     beta         [0,1] Paramter to tune the weight between
%                                        within-class graph and between-class
%                                        graph. Default 0.1. 
%                                        beta*L_b+(1-beta)*W_w 
%
%                         Please see LGE.m for other options.
%
%             Output:
%               eigvector - Each column is an embedding function, for a new
%                           data point (row vector) x,  y = x*eigvector
%                           will be the embedding result of x.
%               eigvalue  - The eigvalue of LPP eigen-problem. sorted from
%                           smallest to largest. 
%
% 
% 
%
% See also LPP, LGE, LSDA
%
%Reference:
%
%   Xiaofei He, Deng Cai and Jiawei Han, "Learning a Maximum Margin
%   Subspace for Image Retrieval", IEEE Transactions on Knowledge and Data
%   Engineering, vol. 20, no. 2, pp. 189-201, February, 2008.
%
%   version 2.1 --July/2007 
%   version 1.0 --May/2006 
%
%   Written by Deng Cai (dengcai AT gmail.com)



[nSmpLabel, nFea] = size(feaLabel);
[nSmpUnlabel, nFea2] = size(feaUnlabel);

nSmp = nSmpLabel+nSmpUnlabel;

if nFea ~= nFea2
    error('Fea error!');
end