最优分割法的matlab源程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档