• Tidak ada hasil yang ditemukan

格子点データの解析

N/A
N/A
Protected

Academic year: 2024

Membagikan "格子点データの解析"

Copied!
20
0
0

Teks penuh

(1)

格子点データの解析

1 月平均全球客観解析データの解析

客観解析データや衛星観測データのような格子点データは、バイナリ形式のデータファイルに記録されてい ることが多いです。バイナリ形式のデータファイルは、テキスト形式の場合とは異なり、直接中身を見ること ができません。プログラムを書いてデータを読み出して解析するのが普通です。ここでは、全球客観解析デー タを用いてバイナリ形式のファイルに記録された格子点データの解析について学びたいと思います。

はじめに、月平均海面気圧のデータファイルを開いて、特定の月のデータを読み出してみます。データファ イルには1979年1月からの月別データが書きこまれていますが、ここでは、2011年1月のデータを読み出す プログラムを作成します。

FORTRAN では、OPEN 文でバイナリ形式のファイルを開きます。テキスト形式の場合とは引数の指定が異

なります。バイナリ形式の場合には、FORM='UNFORMATTED'と指定し、さらに、ACCESS='DIRECT'とします。ま た、RECL=…で、レコード長をバイト数(整数値)で指定します。実数型の配列の場合、各要素は4バイトで、

要素の数は LMAX*MMAX(LMAX は経度方向の格子数、MMAX は緯度方向の格子数)なので、レコード長は 4*LMAX*MMAX バイトになります。C では、fopen 関数を使ってファイルを開きます。モードが"rb" であることに注意しま す。

FORTRAN では、READ 文でデータを読みこみます。書式の指定はありませんが、REC=…でレコード番号を

指定します。2011年1月のデータは385番目のデータですので、レコード番号は385です。Cでは、fseek 関 数を使ってデータファイル上の所定の位置に移動、つまり384個のレコードの分だけ前に移動した後で、fread 関数でデータを読みこみます。書き出しの場合は、FORTRANの場合は WRITE 文、Cの場合は fwrite 関数を 使います。

プログラム:

FORTRAN

C PARAMETER文で定数LMAXとMMAXを宣言する。

C 定数LMAXは経度方向の格子数を、MMAXは緯度方向の格子数を表す。

PARAMETER (LMAX=144,MMAX=73)

C 配列Aを宣言する。

REAL A(LMAX,MMAX)

C データを読みこむ。

C ファイルを開く。

C 機番は10以降の番号を指定する。

C STATUSは読みこみの場合は'OLD'を指定する。

(2)

C バイナリファイルの場合は、FORMには'UNFORMATTED'を指定する。

C さらに、ACCESSには'DIRECT'を指定し、

C RECLにはレコード長をバイト数(整数値)で指定する。

C 各要素は4バイトなので、レコード長は4×要素数である。

OPEN(10,FILE='SLP.dat',STATUS='OLD', + FORM='UNFORMATTED',

+ ACCESS='DIRECT',RECL=4*LMAX*MMAX)

C READ文でデータを読みこむ。

C 機番10を指定する。REC=...でレコード番号を指定する。

C ここでは、385番目のレコードを読みこむ。

C 読みこんだデータを配列Aに格納する。

READ(10,REC=385) A

C ファイルを閉じる。

CLOSE(10)

C データを書き出す。

C ファイルを開く。

C 機番は10以降の番号を指定する。

C STATUSは書き出しの場合は'UNKNOWN'を指定する。

C バイナリファイルの場合は、FORMには'UNFORMATTED'を指定する。

C さらに、ACCESSには'DIRECT'を指定し、

C RECLにはレコード長を整数値で指定する。

OPEN(10,FILE='output.dat',STATUS='UNKNOWN', + FORM='UNFORMATTED',

+ ACCESS='DIRECT',RECL=4*LMAX*MMAX)

C 配列Aの各要素の値を機番10で指定されたファイルに書き出す。

C REC=1と指定し、1番目のレコードとして出力する。

WRITE(10,REC=1) A

C ファイルを閉じる。

CLOSE(10)

STOP END

(参考)C

(3)

#include <stdio.h>

int main(void) {

/* 定数 mmax と lmax を宣言する。

定数 mmax は緯度方向の格子数を、lmax は経度方向の格子数を表す。 */

int mmax=73, lmax=144;

/* 配列 a を宣言する。 */

float a[mmax][lmax];

/* ファイルポインタ fp を宣言する。 */

FILE *fp;

/* データを読みこむ。 */

/* ファイルを開く。

モードは"rb"(バイナリファイルの読みこみ)を指定する。 */

fp = fopen( "SLP.dat", "rb" );

/* ファイルポインタ fp で指定されたファイルの所定の位置に移動する。

第 3 引数に SEEK_SET を指定し、ファイルの先頭を位置の基準とする。

ここでは、385 番目のレコードを読みこむので、

まず、ファイルの先頭から

(385-1)*mmax*lmax*sizeof(float)バイトだけ前方に移動する。 */

fseek( fp, (385-1)*mmax*lmax*sizeof(float), SEEK_SET );

/* 配列 a の各要素の値をファイルポインタ fp で指定されたファイルから読みこむ。

項目のサイズは浮動小数点のサイズ sizeof(float)を指定する。

項目の数は mmax*lmax を指定する。 */

fread( a, sizeof(float), mmax*lmax, fp );

/* ファイルを閉じる。 */

fclose( fp );

/* データを書き出す。 */

/* ファイルを開く。

モードは"wb"(バイナリファイルへの書き出し)を指定する。 */

(4)

fp = fopen( "output.dat", "wb" );

/* 配列 a の各要素の値をファイルポインタ fp で指定されたファイルに書き出す。

項目のサイズは浮動小数点のサイズ sizeof(float)を指定する。

項目の数は mmax*lmax を指定する。 */

fwrite( a, sizeof(float), mmax*lmax, fp );

/* ファイルを閉じる。 */

fclose( fp );

return 0;

}

計算結果は output.dat というファイルに出力されましたが、このファイルの形式をコントロールファイル に記述しておきます。以下のようなテキスト形式のファイルを作成し、output.ctl というファイル名で保存 しておきます。ここでは、変数名を"A"としています。GrADSでは、output.ctl を開いて、"a"という名前の 変数として作図できます(各種設定をした後、"d a"とすればよい)。

コントロールファイル:

DSET output.dat UNDEF -9.99E33 OPTIONS yrev

XDEF 144 LINEAR 0.0 2.5 YDEF 73 LINEAR -90.0 2.5 ZDEF 1 LEVELS 1000

TDEF 1 LINEAR jan1979 1mo VARS 1

A 0 99 Output ENDVARS

上のコントロールファイルでは、DSET はデータファイル名、UNDEF は欠損値、"OPTIONS yrev"はデータの並び 順が南から北ではなく北から南であることを示しています。XDEF(YDEF)は、東西(南北)方向の格子点の数、

始点の経度(緯度)、経度(緯度)間隔、ZDEF は各等圧面の気圧の値(hPa)、TDEF は時刻(この場合は 1979 年1月から1か月間隔)を表します。VARS は変数の種類の数を示し、そのあとで、各変数を列挙します。こ の場合は、変数は1種類で、変数名は"A"です。ひとつめの数字"0"は2次元であることを示します。3次元の 場合は鉛直方向の格子数を入れます。ふたつめの数字"99"は(特殊な書式ではなく)通常の書式であることを 意味します。そのあと、同じ行に続けて変数名を書きます。

(5)

作図例:

次に、2010年12月から2011年2月までの3か月間の海面気圧の平均値を計算してみます。ここでは、3つ の月別値の単純な平均を3か月間の平均とみなします。384番目から386番目までのレコードを順に読みこん で、足していき、最後にレコードの個数3で割ります。

プログラム:

FORTRAN

C PARAMETER文で定数LMAXとMMAXを宣言する。

C 定数LMAXは経度方向の格子数を、MMAXは緯度方向の格子数を表す。

PARAMETER (LMAX=144,MMAX=73)

C 配列A、Bを宣言する。

REAL A(LMAX,MMAX),B(LMAX,MMAX)

C 配列Aの各要素にゼロを代入する。

DO 11 M=1,MMAX DO 12 L=1,LMAX A(L,M) = 0.

12 CONTINUE 11 CONTINUE

C データを読みこむ。

(6)

C ファイルを開く。

C 機番は10以降の番号を指定する。

C STATUSは読みこみの場合は'OLD'を指定する。

C バイナリファイルの場合は、FORMには'UNFORMATTED'を指定する。

C さらに、ACCESSには'DIRECT'を指定し、

C RECLにはレコード長をバイト数(整数値)で指定する。

C 各要素は4バイトなので、レコード長は4×要素数である。

OPEN(10,FILE='SLP.dat',STATUS='OLD', + FORM='UNFORMATTED',

+ ACCESS='DIRECT',RECL=4*LMAX*MMAX)

C ここからデータを読みこむためのDOループが始まる。

C 読みこみたいレコードの個数だけ反復する。

C ここでは、384番目から386番目までのレコードを読みこむ。

DO 21 I=384,386

C READ文でデータを読みこむ。

C 機番10を指定する。REC=...でレコード番号を指定する。

C 読みこんだデータを配列Bに格納する。

READ(10,REC=I) B

C 配列Bの各要素を配列Aの各要素に加える。

DO 31 M=1,MMAX DO 32 L=1,LMAX

A(L,M) = A(L,M) + B(L,M) 32 CONTINUE

31 CONTINUE

C ここでDOループ21が終了する。

21 CONTINUE

C ファイルを閉じる。

CLOSE(10)

C 平均値を計算する。

C 配列Aの各要素をレコードの個数で割る。

DO 41 M=1,MMAX DO 42 L=1,LMAX

(7)

A(L,M) = A(L,M) / REAL(3) 42 CONTINUE

41 CONTINUE

C データを書き出す。

C ファイルを開く。

C 機番は10以降の番号を指定する。

C STATUSは書き出しの場合は'UNKNOWN'を指定する。

C バイナリファイルの場合は、FORMには'UNFORMATTED'を指定する。

C さらに、ACCESSには'DIRECT'を指定し、

C RECLにはレコード長を整数値で指定する。

OPEN(10,FILE='output.dat',STATUS='UNKNOWN', + FORM='UNFORMATTED',

+ ACCESS='DIRECT',RECL=4*LMAX*MMAX)

C 配列Aの各要素の値を機番10で指定されたファイルに書き出す。

C REC=1と指定し、1番目のレコードとして出力する。

WRITE(10,REC=1) A

C ファイルを閉じる。

CLOSE(10)

STOP END

(参考)C

#include <stdio.h>

int main(void) {

/* 定数 mmax と lmax を宣言する。

定数 mmax は緯度方向の格子数を、lmax は経度方向の格子数を表す。 */

int mmax=73, lmax=144, i, m, l;

/* 配列 a、b を宣言する。 */

float a[mmax][lmax], b[mmax][lmax];

/* ファイルポインタ fp を宣言する。 */

(8)

FILE *fp;

/* 配列 a の各要素にゼロを代入する。 */

for (m=0; m<=mmax-1; m++) {

for (l=0; l<=lmax-1; l++) {

a[m][l] = 0.;

} }

/* データを読みこむ。 */

/* ファイルを開く。

モードは"rb"(バイナリファイルの読みこみ)を指定する。 */

fp = fopen( "SLP.dat", "rb" );

/* ここからデータを読みこむための for ループが始まる。

読みこみたいレコードの個数だけ反復する。

ここでは、384 番目から 386 番目までのレコードを読みこむ。 */

for (i=384-1; i<=386-1; i++) {

/* ファイルポインタ fp で指定されたファイルの所定の位置に移動する。

第 3 引数に SEEK_SET を指定し、ファイルの先頭を位置の基準とする。

ファイルの先頭から i*mmax*lmax*sizeof(float)バイトだけ前方に移動する。 */

fseek( fp, i*mmax*lmax*sizeof(float), SEEK_SET );

/* 配列 b の各要素の値をファイルポインタ fp で指定されたファイルから読みこむ。

項目のサイズは浮動小数点のサイズ sizeof(float)を指定する。

項目の数は mmax*lmax を指定する。 */

fread( b, sizeof(float), mmax*lmax, fp );

/* 配列 b の各要素を配列 a の各要素に加える。 */

for (m=0; m<=mmax-1; m++) {

for (l=0; l<=lmax-1; l++) {

a[m][l] = a[m][l] + b[m][l];

}

(9)

}

/* ここで for ループが終了する。 */

}

/* ファイルを閉じる。 */

fclose( fp );

/* 平均値を計算する。 */

/* 配列 A の各要素をレコードの個数で割る。 */

for (m=0; m<=mmax-1; m++) {

for (l=0; l<=lmax-1; l++) {

a[m][l] = a[m][l] / 3.;

} }

/* データを書き出す。 */

/* ファイルを開く。

モードは"wb"(バイナリファイルへの書き出し)を指定する。 */

fp = fopen( "output.dat", "wb" );

/* 配列 a の各要素の値をファイルポインタ fp で指定されたファイルに書き出す。

項目のサイズは浮動小数点のサイズ sizeof(float)を指定する。

項目の数は mmax*lmax を指定する。 */

fwrite( a, sizeof(float), mmax*lmax, fp );

/* ファイルを閉じる。 */

fclose( fp );

return 0;

}

(10)

作図例:

さらに、1月の月平均海面気圧の平年値(1981年から2010年までの30年間の平均値)を計算してみます。

1981年1月のレコード(25番目)から2010年1月のレコード(373番目)を12個おきに順に読みこんで、

足していき、最後にレコードの個数30で割ります。

プログラム:

FORTRAN

C PARAMETER文で定数LMAXとMMAXを宣言する。

C 定数LMAXは経度方向の格子数を、MMAXは緯度方向の格子数を表す。

PARAMETER (LMAX=144,MMAX=73)

C 配列A、Bを宣言する。

REAL A(LMAX,MMAX),B(LMAX,MMAX)

C 配列Aの各要素にゼロを代入する。

DO 11 M=1,MMAX DO 12 L=1,LMAX A(L,M) = 0.

12 CONTINUE 11 CONTINUE

C データを読みこむ。

(11)

C ファイルを開く。

C 機番は10以降の番号を指定する。

C STATUSは読みこみの場合は'OLD'を指定する。

C バイナリファイルの場合は、FORMには'UNFORMATTED'を指定する。

C さらに、ACCESSには'DIRECT'を指定し、

C RECLにはレコード長をバイト数(整数値)で指定する。

C 各要素は4バイトなので、レコード長は4×要素数である。

OPEN(10,FILE='SLP.dat',STATUS='OLD', + FORM='UNFORMATTED',

+ ACCESS='DIRECT',RECL=4*LMAX*MMAX)

C ここからデータを読みこむためのDOループが始まる。

C 読みこみたいレコードの個数だけ反復する。

C ここでは、1981年から2010年までの1月のレコードを読みこむ。

DO 21 IY=1981,2010

C レコード番号を計算する。

C ここでは、25番目から373番目までのレコードを読みこむ。

I = 1 + 12 * (IY-1979)

C READ文でデータを読みこむ。

C 機番10を指定する。REC=...でレコード番号を指定する。

C 読みこんだデータを配列Bに格納する。

READ(10,REC=I) B

C 配列Bの各要素を配列Aの各要素に加える。

DO 31 M=1,MMAX DO 32 L=1,LMAX

A(L,M) = A(L,M) + B(L,M) 32 CONTINUE

31 CONTINUE

C ここでDOループ21が終了する。

21 CONTINUE

C ファイルを閉じる。

CLOSE(10)

C 平均値を計算する。

(12)

C 配列Aの各要素をレコードの個数で割る。

DO 41 M=1,MMAX DO 42 L=1,LMAX

A(L,M) = A(L,M) / REAL(30) 42 CONTINUE

41 CONTINUE

C データを書き出す。

C ファイルを開く。

C 機番は10以降の番号を指定する。

C STATUSは書き出しの場合は'UNKNOWN'を指定する。

C バイナリファイルの場合は、FORMには'UNFORMATTED'を指定する。

C さらに、ACCESSには'DIRECT'を指定し、

C RECLにはレコード長を整数値で指定する。

OPEN(10,FILE='output.dat',STATUS='UNKNOWN', + FORM='UNFORMATTED',

+ ACCESS='DIRECT',RECL=4*LMAX*MMAX)

C 配列Aの各要素の値を機番10で指定されたファイルに書き出す。

C REC=1と指定し、1番目のレコードとして出力する。

WRITE(10,REC=1) A

C ファイルを閉じる。

CLOSE(10)

STOP END

(参考)C

#include <stdio.h>

int main(void) {

/* 定数 mmax と lmax を宣言する。

定数 mmax は緯度方向の格子数を、lmax は経度方向の格子数を表す。 */

int mmax=73, lmax=144, i, iy, m, l;

(13)

/* 配列 a、b を宣言する。 */

float a[mmax][lmax], b[mmax][lmax];

/* ファイルポインタ fp を宣言する。 */

FILE *fp;

/* 配列 a の各要素にゼロを代入する。 */

for (m=0; m<=mmax-1; m++) {

for (l=0; l<=lmax-1; l++) {

a[m][l] = 0.;

} }

/* データを読みこむ。 */

/* ファイルを開く。

モードは"rb"(バイナリファイルの読みこみ)を指定する。 */

fp = fopen( "SLP.dat", "rb" );

/* ここからデータを読みこむための for ループが始まる。

読みこみたいレコードの個数だけ反復する。

ここでは、1981 年から 2010 年までの 1 月のレコードを読みこむ。 */

for (iy=1981; iy<=2010; iy++) {

/* レコード番号を計算する。

ここでは、25 番目(i=12)から 373 番目(i=372)までのレコードを読みこむ。 */

i = 12 * (iy-1979);

/* ファイルポインタ fp で指定されたファイルの所定の位置に移動する。

第 3 引数に SEEK_SET を指定し、ファイルの先頭を位置の基準とする。

ファイルの先頭から i*mmax*lmax*sizeof(float)バイトだけ前方に移動する。 */

fseek( fp, i*mmax*lmax*sizeof(float), SEEK_SET );

/* 配列 b の各要素の値をファイルポインタ fp で指定されたファイルから読みこむ。

項目のサイズは浮動小数点のサイズ sizeof(float)を指定する。

項目の数は mmax*lmax を指定する。 */

fread( b, sizeof(float), mmax*lmax, fp );

(14)

/* 配列 b の各要素を配列 a の各要素に加える。 */

for (m=0; m<=mmax-1; m++) {

for (l=0; l<=lmax-1; l++) {

a[m][l] = a[m][l] + b[m][l];

} }

/* ここで for ループが終了する。 */

}

/* ファイルを閉じる。 */

fclose( fp );

/* 平均値を計算する。 */

/* 配列 A の各要素をレコードの個数で割る。 */

for (m=0; m<=mmax-1; m++) {

for (l=0; l<=lmax-1; l++) {

a[m][l] = a[m][l] / 30.;

} }

/* データを書き出す。 */

/* ファイルを開く。

モードは"wb"(バイナリファイルへの書き出し)を指定する。 */

fp = fopen( "output.dat", "wb" );

/* 配列 a の各要素の値をファイルポインタ fp で指定されたファイルに書き出す。

項目のサイズは浮動小数点のサイズ sizeof(float)を指定する。

項目の数は mmax*lmax を指定する。 */

fwrite( a, sizeof(float), mmax*lmax, fp );

/* ファイルを閉じる。 */

fclose( fp );

(15)

return 0;

}

作図例:

ここで、東西平均からのずれを計算してみます。まず、2011 年1 月のデータを読みこんで、それぞれの緯 度において、東西平均(全経度のデータの平均)を計算します。その後で、各経度での値から東西平均の値を 差し引きます。

プログラム:

FORTRAN

C PARAMETER文で定数LMAXとMMAXを宣言する。

C 定数LMAXは経度方向の格子数を、MMAXは緯度方向の格子数を表す。

PARAMETER (LMAX=144,MMAX=73)

C 配列A、Bを宣言する。

REAL A(LMAX,MMAX),B(MMAX)

C データを読みこむ。

C ファイルを開く。

C 機番は10以降の番号を指定する。

(16)

C STATUSは読みこみの場合は'OLD'を指定する。

C バイナリファイルの場合は、FORMには'UNFORMATTED'を指定する。

C さらに、ACCESSには'DIRECT'を指定し、

C RECLにはレコード長をバイト数(整数値)で指定する。

C 各要素は4バイトなので、レコード長は4×要素数である。

OPEN(10,FILE='SLP.dat',STATUS='OLD', + FORM='UNFORMATTED',

+ ACCESS='DIRECT',RECL=4*LMAX*MMAX)

C READ文でデータを読みこむ。

C 機番10を指定する。REC=...でレコード番号を指定する。

C ここでは、385番目のレコードを読みこむ。

C 読みこんだデータを配列Aに格納する。

READ(10,REC=385) A

C ファイルを閉じる。

CLOSE(10)

C 東西平均値を計算する。

C 配列Bの各要素にゼロを代入する。

DO 11 M=1,MMAX B(M) = 0.

11 CONTINUE

C ここから東西平均を計算するためのDOループが始まる。

DO 21 M=1,MMAX

C 配列Aの各経度での値を配列Bに加える。

DO 31 L=1,LMAX

B(M) = B(M) + A(L,M) 31 CONTINUE

C 配列Bの各要素の値を経度方向の格子数で割る。

B(M) = B(M) / REAL(LMAX)

C ここでDOループ21が終了する。

21 CONTINUE

C 東西平均値からの偏差を計算する。

(17)

C 配列Aの各要素の値から、配列Bの対応する要素の値を差し引く。

DO 41 M=1,MMAX DO 42 L=1,LMAX

A(L,M) = A(L,M) - B(M) 42 CONTINUE

41 CONTINUE

C データを書き出す。

C ファイルを開く。

C 機番は10以降の番号を指定する。

C STATUSは書き出しの場合は'UNKNOWN'を指定する。

C バイナリファイルの場合は、FORMには'UNFORMATTED'を指定する。

C さらに、ACCESSには'DIRECT'を指定し、

C RECLにはレコード長を整数値で指定する。

OPEN(10,FILE='output.dat',STATUS='UNKNOWN', + FORM='UNFORMATTED',

+ ACCESS='DIRECT',RECL=4*LMAX*MMAX)

C 配列Aの各要素の値を機番10で指定されたファイルに書き出す。

C REC=1と指定し、1番目のレコードとして出力する。

WRITE(10,REC=1) A

C ファイルを閉じる。

CLOSE(10)

STOP END

(参考)C

#include <stdio.h>

int main(void) {

/* 定数 mmax と lmax を宣言する。

定数 mmax は緯度方向の格子数を、lmax は経度方向の格子数を表す。 */

int mmax=73, lmax=144, m, l;

(18)

/* 配列 a、b を宣言する。 */

float a[mmax][lmax], b[mmax];

/* ファイルポインタ fp を宣言する。 */

FILE *fp;

/* データを読みこむ。 */

/* ファイルを開く。

モードは"rb"(バイナリファイルの読みこみ)を指定する。 */

fp = fopen( "SLP.dat", "rb" );

/* ファイルポインタ fp で指定されたファイルの所定の位置に移動する。

第 3 引数に SEEK_SET を指定し、ファイルの先頭を位置の基準とする。

ここでは、385 番目のレコードを読みこむので、

まず、ファイルの先頭から

(385-1)*mmax*lmax*sizeof(float)バイトだけ前方に移動する。 */

fseek( fp, (385-1)*mmax*lmax*sizeof(float), SEEK_SET );

/* 配列 a の各要素の値をファイルポインタ fp で指定されたファイルから読みこむ。

項目のサイズは浮動小数点のサイズ sizeof(float)を指定する。

項目の数は mmax*lmax を指定する。 */

fread( a, sizeof(float), mmax*lmax, fp );

/* ファイルを閉じる。 */

fclose( fp );

/* 東西平均値を計算する。 */

/* 配列 b の各要素にゼロを代入する。 */

for (m=0; m<=mmax-1; m++) {

b[m] = 0.;

}

/* ここから東西平均を計算するための for ループが始まる。 */

for (m=0; m<=mmax-1; m++) {

/* 配列 a の各経度での値を配列 b に加える。 */

(19)

for (l=0; l<=lmax-1; l++) {

b[m] = b[m] + a[m][l];

}

/* 配列 b の各要素の値を経度方向の格子数で割る。 */

b[m] = b[m] / lmax;

/* ここで for ループが終了する。 */

}

/* 東西平均値からの偏差を計算する。 */

/* 配列 a の各要素の値から、配列 b の対応する要素の値を差し引く。 */

for (m=0; m<=mmax-1; m++) {

for (l=0; l<=lmax-1; l++) {

a[m][l] = a[m][l] - b[m];

} }

/* データを書き出す。 */

/* ファイルを開く。

モードは"wb"(バイナリファイルへの書き出し)を指定する。 */

fp = fopen( "output.dat", "wb" );

/* 配列 a の各要素の値をファイルポインタ fp で指定されたファイルに書き出す。

項目のサイズは浮動小数点のサイズ sizeof(float)を指定する。

項目の数は mmax*lmax を指定する。 */

fwrite( a, sizeof(float), mmax*lmax, fp );

/* ファイルを閉じる。 */

fclose( fp );

return 0;

}

(20)

作図例:

客観解析データは、数値モデルに観測値を取りこみながら時間発展させて得られた格子点データです。現業 の天気予報や学術研究では観測値とみなして利用することも多いですが、厳密には観測値ではない点に注意が 必要です。

課題B:2011年1月の月平均海面気圧、500hPa面高度、850hPa面気温の偏差を計算せよ。ここでは、平年値

(1981年から 2010年までの30年間の平均値)からのずれを偏差と定義する。海面気圧の偏差の計算に用い たプログラム(anomaly.f[.c])と、海面気圧(SLP.ps)、500hPa面高度(Z500.ps)、850hPa面気温(T850.ps)

の偏差を作図した図を提出せよ。なお、作図する領域は北緯20度以北の全経度域とし、ポーラーステレオで 作図せよ。

※この演習では NCEP/NCAR(米国環境予測センター/米国大気研究センター)による客観解析データを用い ています。

Referensi

Dokumen terkait

タンパク質に結合するRNAの同定法 RNP複合体の直接解析について述べる前に,まずは 現在行われているRNP複合体解析の主な手法について 見てみたい.RNP複合体解析にまず必要なのはどのタ ンパク質がどのRNAに結合しているかを同定すること である.今まではこの目的には,RNA結合タンパク質 をbait(釣り餌)として,これに結合するRNAを回収

PCC6803(13), (14) のTSSが決定されている.わ れわれも乳酸菌を用いて,同様の解析を行い,TSSの 網羅的な解析に成功している(論文準備中).古細菌の TSSの解析にも,この方法は用いられており, Gö1 の網羅的なTSSの報告がなされて いる(15).しかしながら実際のデータにはTSSに加え, TEX処理で分解されなかった一つのリン酸基を5′

5.1 データの種類 分析しようとしている対象であるデータには、様々な種類のものがあります。このようなデータ を数値として分析しようとするとき、これに当てはめるモノサシのことを尺度といいます。 例えば、データは次のようなものである可能性があります。 • 英語の小テストの得点 • 好きな曜日 • 郵便番号 • A市とB市の合併に対する賛否 • 長さ •

解析コードの編集 前項で作成した 1 次メッシュの解析コード(DKTshell-1P.comm)をコピーして、COQUEshell-1P.comm を作成 し、このファイルを編集する事にする。 以下の様に修正する。 <材料の定義> 修正せず。 DEFI_MATERIAU MA ELAS E 210000000000.0 NU 0.3

胞の発現遺伝子 CAGE 解析の結果,iPS 細胞は骨 芽細胞分化誘導時に使用するプロモーターが通常の 間葉系幹細胞が利用するプロモーターとは異なるこ とが明らかとなった。さらに,今まで知られてこな かった未知 non­codingRNA が骨芽細胞分化調節 を行っている可能性を示唆するデータも得られてい る。シングルセル解析 CHIP アッセイにより核膜タ

本日の内容・連絡事項 今日の話は 弱解の方法現象数理学科の「応用複素関数」を履修した人は、今日の話は70%位は 聴いた覚えがあるかもしれません。しかし大事なことなので、端折らないで説明します。 種本は前回も紹介した菊地[1]です。 有限要素法を用いる際に必ず必要になるのが、解こうとしている問題の弱形式 weak form

本日の内容&連絡事項 これは実は毎年そうしていますが宿題の解答PDFを公開します。 「数学解析WWWサイト」の問のところに置いてあります。 第14回授業では、当初の予定では、広義積分の解説をする予定でし たが、宿題の解説をすることに切り替えます。 「期末試験の準備は、宿題にきちんと取り組むのがよい」と考えてい て、例年次のように説明しています。

情報・知能工学基礎実験 「計算機間データ通信の基礎」のマニュアル 実験の流れ 実験1: 計算機間データ通信の動作確認 実験2: 通信パラメータを変化させた時の波形分析 実験3: テキスト・ファイルの転送実験 実験4: 同期ずれの観測 実験上の注意事項 • Txボードは壊れやすいので丁寧に扱い,電源は必ず5Vとすること. •