2 van 2

Re: Matlab: enen tellen

Geplaatst: do 04 sep 2008, 14:16
door EvilBro
Bedacht me net dat je ook de convolutie kan misbruiken (denk ik). Dan is je hele programma gelijk aan:

Code: Selecteer alles

sum(b)/sum(conv([1,-1],b)>0)

Re: Matlab: enen tellen

Geplaatst: do 04 sep 2008, 15:29
door Merien
EvilBro schreef:Voor de lol:

Code: Selecteer alles

b = [1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1];

for i = 2:1:size(b,2),

  if b(1,i) == 1,

b(1,i) = b(1,i-1) + 1; 

b(1,i-1) = 0;

  end

end

sum(b)/sum(b>0)
Tot mijn verbazing werkt dit perfect, zo perfect dat het grofweg zo'n 30 keer sneller is dan de oplossing van physicalattraction

Elapsed time is 6.601886 seconds. Met de oplossing van physicalattraction

Elapsed time is 0.245756 seconds. Met de oplossing van EvilBro

Mooie resultaten gekregen trouwens :D