最优分割法的matlab源程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vector=[6.0 6.0 5.3 4.0 5.7 6.3 4.3 5.7 8.3 7.3 4.7 10.7] function [std]=std1(vector)
max1=max(vector);
min1=min(vector);
[a,b]=size(vector);
for j=1:b
std(j)=(vector(j)-min1)/(max1-min1);
end
function [D,a,b]=range1(vector)
[a,b]=size(vector);
k=a;
for i=1:b
for j=i:b
d(i,j)=max(vector(k,i:j)) -min(vector(k,i:j));
end
end
D=d;
function [S,alp]=divi2(vector,n)
[d,a,b]=range1(vector);
alp=ones(n-1,b)
S=zeros(b,b)
for m=2:b
for j=1:m-1
s(m,j)=d(1,j)+d(j+1,m)
end
S_temp(m,1)=min(s(m,1:m-1))
for j=1:m-1
if S_temp(m,1)==s(m,j);
alp(n-1,m)=j;
end
end
for t=1:m
S(t,alp(n-1,t))=S_temp(t,1);
end
end
function [S,alp]=divi(vector,n)
[d,a,b]=range1(vector);
alp=zeros(1,b);
for m=n:b
for j=n-1:m-1
if n==2
s(m,j)=d(1,j)+d(j+1,m);
else
[S,alp]=divi(vector,n-1);
s(m,j)=S(j,alp(j))+d(j+1,m);
end
end
S=zeros(b,b);
S_temp(m,1)=min(s(m,n-1:m-1)); for j=1:m-1
if S_temp(m,1)==s(m,j);
alp(m)=j;
end
end
for t=1:m
if alp(t)~=0
S(t,alp(t))=S_temp(t,1);
end
end
end
function [array]=sect(vector,n) [a,b]=size(vector);
for num=n:-1:2
[S,alp]=divi(vector,num);
if num==n
array(num-1)=alp(1,b);
else
array(num-1)=alp(array(num)); end
end