matlab... again

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

Previous post Next post
Up