function MidValue(index,Len:integer;v:real):real;//中值滤波数据
var
dataBuf:array[0..9,0..99]of real;//数据缓冲区
function MidValue(index,Len:integer;v:real):real;//中值滤波数据
var
i,j:integer;
tmp:real;
min:real;
minIndex:integer;
t:array[0..99]of real;
begin
for i:=99 downto 1 do
dataBuf[index,i]:=dataBuf[index,i-1];
DataBuf[index,0]:=v;
for i:=0 to 99 do
t[i]:=dataBuf[i];
for i:=0 to Len-2 do
begin
min:=t[i];
minIndex:=i;
for j:=i+1 to Len-1 do
if t[j]<min then
begin
min:=t[j];
minIndex:=j;
end;
if minIndex<>i then
begin
tmp:=t[i];
t[i]:=min;
t[minIndex]:=tmp;
end;
end;
tmp:=0;
j:=0;
for i:=Len div 2 - Len div 4 to Len div 2 + Len div 4 do
begin
tmp:=tmp+t[i];
inc(j);
end;
result:=tmp/j;
end;