matlab code
帮同学写的.... X, Y 列数要相同
unction [w, lambda, s_minus, s_plus, theta]=eda(X,Y)
[m,n]=size(X);
[s,l]=size(Y);
if n~=l
disp('the Matrix X, Y must have the same num of col');
else
epsilon=10^-6; %定义非阿基米德无穷小
f=[zeros(1,n) -epsilon*ones(1,m+s) 1];
%A=zeros(1,n+m+s+1);
%b=0;
LB=zeros(n+m+s+1,1);
UB=[];
LB(n+m+s+1)=-Inf;
for i=1:n
Aeq=[X eye(m) zeros(m,s) -X(:,i);Y zeros(s,m) -eye(s) zeros(s,1) ];
beq=[zeros(m,1); Y(:,i)];
w(:,i)=LINPROG(f,[],[],Aeq,beq,LB,UB); %解线性规划的DMU的最佳权向量
end
%w %输出最佳权向量
lambda=w(1:n,:);
s_minus=w(n+1:n+m,:);
s_plus=w(n+m+1:n+m+s,:);
theta=w(n+m+s+1,:);
end