i:i+10 to też pętla ;) Ale ukryta - taki zabieg nazywamy w octave/matlabie wektoryzacją zagadnienia.
Modyfikacje Twojego rozwiązania:
1) Polecenia "data3 = []" i "data3 = [data3, data2]" to wygodny zapis dla nieznanej długości data3, ale kosztują: w każym obiegu pętli wykonujesz dodatkowo niepotrzebne operacje: -- utwórz nową tablicę data3 o długości length(data3)+1 -- skopiuj starą do nowej -- skasuj starą Remedium: prealokacja tablicyL=floor(length(data1)/10); data3=zeros(1,L); for i=1:L data3[i]= max(data1((i-1)*10+(1:10))) endfor
2) Na ogół 10<L, więc lepiej zmienić kolejność jawnej i niejawnej pętli, jawne (czyli niezwektoryzowane) wykonują się wolniejRemedium poniżej (przy założeniu, że data1 jest wektorem kolumnowym);
ii=1:10:length(data1); data3=data1(ii).'; for i=1:9 data3=max([ data3; data1(i+ii).' ]); endfor
3) Obie pętle można w tym zagadnienu zwektoryzować, ale tu opłacalność pewnie żadna, a czytelność kodu spada:l=length(data1); i=ones(10,l/10); i(1,:)=1:10:l; i=cumsum(i); data3=max(data1(i)); clear i; ;)