OctaveのFITS(Flexible Image Transport System)形式

Octaveに精通し続けて、私はFITSファイルで基本操作を実行しようとすることにしました。 結局のところ、「デフォルト」のOctaveには、FITSを操作するためのツールはありません。 しかし、Googleは私を助けてくれました。 そこで、GoogleからsourceforgeのOctaveページに移動しました。 必要なFITSパッケージをダウンロードし、解凍してコンパイルしようとしました。 しかし、そこにありました! ./configureを実行すると、何も起こりませんでした。 srcディレクトリを見てみると、何も面白いものは見られず、基本的なMakefileだけが見えました。 その内容から、Octaveパッケージコンパイラであるmkoctfileもインストールする必要があることがわかりました。 mandrivaでは、octave-develパッケージにあります。必要なパッケージをインストールした後、makeを実行して3つのファイルを取得しました。
  read_fits_image.oct save_fits_image.oct save_fits_image_multi_ext.oct 
それらをどこに置くか、私にはわからなかったが、
 ロケート\ .oct 
ディレクトリに連れて行ってくれた
  /usr/lib/octave/3.4.2/oct/i586-mandriva-linux-gnu/ 
ここで(もちろんルートの代わりに)ファイルがコピーされました。Octaveを起動して最初に確認したのは、これらのコマンドが機能するかどうかです。 彼らは働く。 ファイルfilename.fitsをvar変数に読み込むには、以下を行う必要があります。
var = read_fits_image("filename.fits");
      
      



主なことは、コマンドの最後にあるセミコロンを忘れないことです。そうすることで、数字のストリームを取得できません!セミコロンについては、忘れてしまったときに「覚えています」。 ユーザーを無限のデータストリームであふれさせるmatlabとは異なり、Octaveは出力をページに分割します(見かけ上、画面に表示するのに使用されるものは少ない)。ファイルのヘッダーを読み取るには、次を実行します。
 [var, head] = read_fits_image("filename.fits");
      
      



whosコマンドは、headが80文字の文字列長の文字列配列であることを示しています(FITS形式の制限を忘れないでください)。ファイルのヘッダー全体は、名前/値/コメントに分割せずに単純に行ごとに書き込まれます(つまり、Octaveでヘッダーを使用する場合) 、このすべてを自分で行うか、FITSパッケージに必要な機能を追加する必要があります。これには資金があります)imshowを使用して画面にファイルを表示しようとしました。 やばい! 私は見た...絶対に何もない。 しかし、imagescは画像を表示し、カラーマップをカラーマップコマンドに変更しました。
 imagesc(log(var));
      
      



ディスプレイはもっと楽しくなります。私のfitsviewを思い出して、gnuplotを「スクライバー」として使用するのは非常に面倒です。Octaveが必要なデータをgluplotに送信してから、gnuplotが画面に表示するまで長い時間待たなければなりません。最後に、object_XXXX.fit(XXXXは数字)という形式のディレクトリ内のファイルを合計するための簡単な小さなプログラムです。最初の数字から始まり、最後の数字で終わります。
 function ret = sum_fits(first, last) ret = [1 2 3]; frst = 1; i = 0; for num = [ first : last ] i++; name = sprintf("object_%04d.fit", num); %    II = read_fits_image(name); %   med = median(median(II)); %      printf("%d:\tread file %s, median = %d\n", i, name, med); fflush(1); %    ! II -= med; %  "" (bias'  ) if(frst == 1) %  frst = 0; ret = II; else ret += II; end end end
      
      



そして、フィールドの回転中心の座標を決定するために取得した画像の例:
 II = sum_fits(1,147); a = II; a(find(a < 1)) = 1; imagesc(log(a))
      
      



次の図が表示されます。

はい、私はほとんど忘れていました。OctaveにはQtOctaveなどのマットのようなインターフェースもあります。 一般的に、インターフェースのデザインはかなりまともですが、コマンドラインを個別に取り出すと、何かを書き始めるためにマウスをその中に入れる必要があるため、Octave CLIの方がずっと便利で便利です。



All Articles