EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Matlab: enen tellen

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)
Gebruikersavatar
Merien
Artikelen: 0
Berichten: 124
Lid geworden op: di 21 aug 2007, 22:03

Re: Matlab: enen tellen

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

Terug naar “Informatica en programmeren”