git-svn-id: http://moon:8086/svn/matlab/trunk@157 801c6759-fa7c-4059-a304-17956f83a07c
52 lines
999 B
Matlab
Executable File
52 lines
999 B
Matlab
Executable File
function [xmin, xmax] = maxlist_eval(x, L)
|
|
|
|
mode = 1;
|
|
for s=1:2
|
|
mode = -mode;
|
|
|
|
P = mode*1234;
|
|
u = zeros(L, 1);
|
|
p = zeros(L, 1);
|
|
u_last = zeros(L, 1);
|
|
p_last = zeros(L, 1);
|
|
|
|
OFF = 1;
|
|
|
|
u_last(1 + OFF) = P;
|
|
u_last(0 + OFF) = 0;
|
|
p_last(0 + OFF) = 0 + OFF;
|
|
N = 0 + OFF;
|
|
|
|
for k=1:lge(x),
|
|
if (p_last(N) == (L + OFF))
|
|
m = 0;
|
|
u_last(N) = P;
|
|
else
|
|
m = 1;
|
|
end
|
|
|
|
ii = 0;
|
|
while mode*x(k) >= mode*u_last(ii+1+OFF)
|
|
ii = ii + 1;
|
|
end
|
|
N = N - ii + m;
|
|
|
|
for jj=(1 + OFF):(N -1)
|
|
u(jj+1) = u_last(jj+ii);
|
|
p(jj+1) = p_last(jj+ii) + 1;
|
|
end
|
|
u(N+1) = P;
|
|
u(1 + OFF) = x(k);
|
|
p(1 + OFF) = 1 + OFF;
|
|
u_last = u;
|
|
p_last = p;
|
|
if (mode < 0)
|
|
xmin(k) = u(N);
|
|
pmmin = p(N);
|
|
else
|
|
xmax(k) = u(N);
|
|
pmax = p(N);
|
|
end
|
|
end;
|
|
end;
|