2016-06-28 16 views
0

私は全く新しいコーディングをしていて、自分が何をしているのかほとんど分かりません。現在、私は銀河の中心から各ピクセルの半径をフィットファイルで見つけることを試みています。私はフィットファイルと同じサイズの空の配列を作成することでこれを試すように言われました。私はx値ごとにforループを使い、各yにはforループを使用しようとしています。これまでのところ、配列があり、forループを作成しようとしました。各ピクセルのidlの半径

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 

私はこの見た目がひどいことを知っています。私は何をしているのか分かりません。誰でも助けてもらえれば幸いです。

答えて

2

もっと簡単なバージョンを見てみましょう。 1つの行に10ポイントがあり、各ポイントの距離をある程度から計算したいとします。xref私はここにDINDGENコマンドを使用していた

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

、そしてあなたが助けを調べることができます:あなたがこれを行うことができますので、IDLは、ベクトル演算をサポートしています。今度は2次元の場合、2次元配列が必要です.1つは、各ピクセルのX座標を含む500 * 500の配列で、もう1つはY座標を含みます。配列は、形式である必要がありますので、

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

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

は、我々は#演算子を使用してそれらを生成することができます。 IDLはデフォルトで0からカウントされることに注意してください。

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 

は、今度は再びベクトル演算を用いた通常、D =のSQRT(X X + Y y)との距離を計算することができるが、:

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

これは含ま500×500アレイでありますxref、yrefポイントから各ピクセルの距離。

+0

ありがとうございました!これはとても助けになりました! – LexieStark