function [LP,J]=lp(X)
% LP对有序样品向量X进行最优分割
% 语法 LP=lp(X)
% X─从小到大排列的有序数据向量
% LP─分类损失函数值
% J─最优分割点
n=length(X);
D=zeros(n,n);
LP=zeros(n,n-1);
J=zeros(n,n-1);
for i=1:n-1
for j=2:n
if(i<j)
sx=0;
d=0;
for t=i:j
sx=sx+X(t);
end
meanx=sx/(j-i+1);
for k=i:j
d=d+(X(k)-meanx).^2;
end
D(j,i)=d;
end
end
end
for k=2:n-1
for p=3:n
if(k<p)
min=9999;
minj=0;
if(k==2)
for j=2:p
temp=D(j-1,1)+D(p,j);
if(temp<min)
min=temp;
minj=j;
end
end
else
for j=k:p
temp=LP(j-1,k-1)+D(p,j);
if(temp<min)
min=temp;
minj=j;
end
end
end
LP(p,k)=min;
J(p,k)=minj;
end
end
end
LP=LP(end,:);
J = unique([unique(J(:,2))',unique(J(end,:))]);