function [max_x min_x max_I min_I]=yantuo(Ts,t,x)
[max_x min_x max_I min_I]=maxmin1(x);
M=length(max_x);
N=length(min_x);
%左端点延拓
if M==N==1
k1=2*abs(max_I(1)-min_I(1));
elseif max_I(1)<min_I(1)
k1=max_I(2)-max_I(1);
else
k1=min_I(2)-min_I(1);
end
Tmax_lspr1=(max_I(1)-k1)*Ts;
Tmax_lspr2=(max_I(1)-2*k1)*Ts;
Umax_lspr1=max_x(1);
Umax_lspr2=max_x(1);
Tmin_lspr1=(min_I(1)-k1)*Ts;
Tmin_lspr2=(min_I(1)-2*k1)*Ts;
Umin_lspr1=min_x(1);
Umin_lspr2=min_x(1);
%右端点延拓
if M==N==1
k2=2*abs(max_I(M)-min_I(N));
elseif max_I(M)>min_I(N)
k2=max_I(M)-max_I(M-1);
else
k2=min_I(N)-min_I(N-1);
end
Tmax_rspr1=(max_I(M)+k2)*Ts;
Tmax_rspr2=(max_I(M)+2*k2)*Ts;
Umax_rspr1=max_x(M);
Umax_rspr2=max_x(M);
Tmin_rspr1=(min_I(N)+k2)*Ts;
Tmin_rspr2=(min_I(N)+2*k2)*Ts;
Umin_rspr1=min_x(N);
Umin_rspr2=min_x(N);
%特例,端点的特殊处理
if x(1)>max_x(1)
Umax_lspr1=x(1);
Tmax_lspr1=t(1);
end
if x(1)<min_x(1)
Umin_lspr1=x(1);
Tmin_lspr1=t(1);
end
if x(end)>max_x(M)
Umax_rspr1=x(end);
Tmax_rspr1=t(end);
end
if x(end)<min_x(N)
Umin_rspr1=x(end);
Tmin_rspr1=t(end);
end
%新的极大极小值和时间序列
max_x=[Umax_lspr2 Umax_lspr1 max_x Umax_rspr1 Umax_lspr2];
min_x=[Umin_lspr2 Umin_lspr1 min_x Umin_rspr1 Umin_lspr2];
max_I=[Tmax_lspr2 Tmax_lspr1 max_I*Ts Tmax_rspr1 Tmax_rspr2];
min_I=[Tmin_lspr2 Tmin_lspr1 min_I*Ts Tmin_rspr1 Tmin_rspr2];
output=[];