clear
clc
bds=textread(input('输入数据文件名 ==>','s'));
di=input('输入纵向压缩比 di==>');
kk=input('输入迭代次数 kk==>');
t=num2str(kk);
s=[' f:\matlab\data\ ' bds];
sp=[s 'p' t];
hold off ;
eval(['load' s]);
eval(['z=' bds ';'])
eval(['clear' bds]);
x=z(1,:);
y=z(2,:);
[t,n]=size(x);
xl=x(n)-x(1);
nn=n-1;
plot(x,y,'--ok')
hold on
for k=1:kk
for i=1:nn
a(i)=(x(i+1)-x(i))/xl;
e(i)=(x(n)*x(i)-x(1)*x(i+1))/xl;
c(i)=(y(i+1)-y(i)-di*(y(n)-y(1)))/xl;
f(i)=(x(n)*y(i)-x(1)*y(i+1)-di*(x(n)*y(1)-x(1)*y(n)))/xl;
end
for i=1:nn
for j=1:nn
xx((i-1)*nn+j)=a(i)*x(j)+e(i);
yy((i-1)*nn+j)=c(i)*x(j)+di*y(j)+f(i);
end
end
[t,n]=size(xx);
nn=n-1;
if k==1,ss=''':k''';end
if k>=2,ss='''-k''';end
eval (['plot(xx,yy, ' ss ' ) ' ])
x=xx;
y=yy;
end
spp=['fwd=fopen(' '''' sp '''' ',' '''' 'w' '''' ')'];
eval(spp);
for i=1:n
fprintf(fwd,'%8.4f',xx(i));
end
fprintf(fwd,'\n');
for i=1:n
fprintf(fwd,'%8.4f',yy(i));
end
fclose(fwd);