Sep 21, 2010 14:25
вот так всегда - нашел как улучшить алгоритм, написал, переписал. Разобрался в ошибках. Исправил. Подумал о непредвиденных ситуациях, написал проверки, протестил его. Потестил с непредвиденными ситуациями, отдебажил. Добавил иф-стейтов. Понаписывал комментариев, что бы понять как оно работает завтра. Переписал красиво. Подумал о памяти. и послал себе на мыло. 4 часа, блин, ради вот этого куска кода:
inx_steps_temp = inx_steps(2:end)-inx_steps(1:end-1);
groups = [];
for i=1:length(inx_steps_temp)
if(inx_steps_temp(i)~=1)
groups = [groups i];
end;
end;
%Just not to loose the last part due to the cutting of the last
%part of inx_steps in inx_steps(2:end)-inx_steps(1:end-1) will
%add the last group.
groups=[groups length(inx_steps)];
temp222222 = [];
for foo=1:(length(groups))
if foo==1
first=1;
last = (groups(foo));
else
first = (groups(foo-1)+1);
last = groups(foo);
end;
k = 0;
[h,max_temp] = max(f(inx_steps(first:last)));
if max_temp~=1
if max_temp==last-first+1
%maximum value is right. lets check is it a peak
while(f(inx_steps(last)+k) < f(inx_steps(last)+k+1))
k=k+1;
end;
max_temp = inx_steps(last) + k;
else
%if all is ok, lets say our peak is here
max_temp = inx_steps(first+max_temp-1);
end;
else
%maximum value is the most left.Lets check is it a peak
%or not
while(f(inx_steps(first)-k) < f(inx_steps(first)-k-1))
k=k+1;
end;
max_temp = inx_steps(first) - k;
end;
temp222222 = [temp222222 max_temp];
end;
clear inx_steps;
inx_steps = temp222222;
clear temp222222;
а потом выясняется, что у меня был неправильный код с самого начала. ччерт-ччерт-ччерт(
matlab,
процедурное программирование,
вот незадача,
programming