2016-06-28 13 views
0

Ich bin völlig neu in der Codierung und habe fast keine Ahnung, was ich tue. Derzeit versuche ich den Radius jedes Pixels aus dem Zentrum einer Galaxie in einer Fit-Datei zu finden. Ich wurde aufgefordert, dies zu versuchen, indem ich ein leeres Array mit der gleichen Größe wie die Fits-Datei erstelle und versuche, für jeden x-Wert eine for-Schleife und für jede y eine for-Schleife zu verwenden. Bisher habe ich das Array und habe versucht, die for-Schleifen zu erstellen.Idl Radius von jedem Pixel

xcenter =249.8 
ycenter =250.0 

d=fltarr(500,500) 

for i=0,499 do begin 
    d=d(i-xcenter,*) 
endfor 

for j=0,499 do begin 
    d=d(j-ycenter,*) 
endfor 

Ich weiß, dass es schrecklich aussieht und ich habe offensichtlich keine Ahnung, was ich mache. Wenn jemand überhaupt Hilfe anbieten kann, wäre ich dankbar.

Antwort

2

Schauen wir uns zuerst eine einfachere Version an. Angenommen, Sie haben 10 Punkte in einer Linie und möchten die Entfernung jedes Punktes von einigen xref berechnen. IDL unterstützt Vektor Mathematik, so können Sie dies tun:

xref = 5.4 
x = dindgen(10) 
distance = abs(x - xref) 

ich den DINDGEN Befehl hier verwendet haben, und Sie können die Hilfe suchen. In einem 2D-Fall möchten Sie 2-d-Arrays: Eines ist ein 500 * 500-Array, das die X-Koordinate jedes Pixels enthält, das andere enthält die Y-Koordinate. So sind die Anordnungen der Form sein müssen wird,

0 1 2 3 ... 
0 1 2 3 ... 
0 1 2 3 ... 

und

0 0 0 0 ... 
1 1 1 1 ... 
2 2 2 2 ... 

können wir sie erzeugen den # Operator. Beachten Sie, dass IDL standardmäßig von 0 aus gezählt wird.

just_one = replicate(1d, 500) ; contains 1 1 1 1 ... 
one_500 = dindgen(500)  ; contains 0.0 1.0 2.0 ... 
x = just_one # one_500 
y = one_500 # just_one 

Nun kann die Entfernung wie üblich, d = sqrt (x x + y y) berechnet werden, aber auch hier Vektor math Verwendung:

distance = sqrt((x - xref)^2 + (y - yref)^2) 

Dies ist ein 500x500-Array, das enthält die Entfernung jedes Pixels von Ihren Xref-, Yref-Punkten.

+0

Vielen Dank! Das hat sehr geholfen! – LexieStark