DMUG-Archiv 2002

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Do loop beschleunigen

Die unten angegeben Lösung ist sehr elegant, aber nicht schneller (dauert
immer noch im Minutenbereich für 1024x1024 Bild), als die ursprüngliche
Do-Schleife. Folgende Änderung war noch nötig, da "bm" ja eine
zweidimensionale Matrix ist:

...
Bucket[i_] := Round[Sqrt[(i[[1]] - c1)^2 + (i[[2]] - c2)^2]] + 1
...
MapIndexed[ SetBucket[#1, Bucket[#2]]&, bm, {2}]
...


Aber, wie gesagt, schneller geht es damit nicht.

Gruß, Uli Schwarz



Thomas Hahn wrote:

> > 3.) Oder ist hier ein ganz anderer Weg einzuschlagen?
> >
> > Hier meine sehr cpp-artige Schleife:
>                   ^^^^^^^^^^
>
> Könnte schon an der Schleife liegen. Probier mal:
>
> count[_] = intensity[_] = 0
>
> c1=500; c2=492;
> Bucket[i_, j_] := Round[Sqrt[(i - c1)^2 + (j - c2)^2]] + 1
>
> SetBucket[bucket_, int_] := (++count[bucket]; intensity[bucket] += int)
>
> MapIndexed[ SetBucket[#1, Bucket[#2]]&, bm ]
>
> result = Array[{#, count[#], intensity[#]}&, 1024]
>
> Gruß,
>
> Thomas Hahn

--
Ulrich T. Schwarz              Tel: (++49) 0941 943 2113
NWF II - Physik                Fax: (++49) 0941 943 2754
Universitaet Regensburg        e-mail: uli.schwarz@XXXXXXX.de
D-93040 Regensburg
url: http://homepages.uni-regensburg.de/~scu04188




Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html