for MATLAB ver.15.0.0 |
- dbStoreってなに?
- データ名の登録
- dbStoreのインストール
- 保存データの準備
- データの保存
- フレームデータの保存
- データの登録のキャンセル
- エラーコードの取得
- 保存したデータの削除
- dbStoreのアンインストール
- クイズに挑戦!
dbStoreってなに?
dbStoreとは、MATLABから直接呼出し可能なプログラムで、任意のブロック(生)データや、生データの一次処理後に発生した配列データ等の任意のバイナリ配列データ、また、実験パラメータ等を登録・保存するために使用します。MATLABから呼び出すプログラム(.m)ファイルとランタイム共有ライブラリdbStore.DLL(Linux版はlibdbstore.so)より構成されています。
ですからユーザが共有ライブラリを呼び出す専用アプリケーションを作ることもできます。
データやパラメータを保存するのに使うんだね。 | |||
データ名の登録
dbStoreでデータを保存するには、データ名をあらかじめデータベースに登録しておく必要があります。データ名を決め、データベースに登録をしましょう。
STEP1 | データ名を決めよう |
---|
データ名は、英数字、-(ハイフン)以外のものは使用できません。大文字、小文字は区別されます。
例)Bolometer, ImpMon, LIP-ICCD
まずはデータ名を決めるんだね。 | |||
STEP2 | データ名を登録しよう |
---|
データ名が登録されると、LABCOMより連絡が入ります。
これでdbStoreでデータの保存ができるようになります。
dbStoreのインストール
計測データ・パラメータを保存するには、dbStoreを利用します。次の手順に沿って、dbStoreをインストールしましょう。
- Retrieve+dbStoreをダウンロードし適当なフォルダに保存します。ダウンロードはこちらから。
- インストールするPCに旧版のRetrieve+dbStoreがインストールされている場合は、必ず旧版をアンインストールしてください。
- ダウンロードしたファイルをダブルクリックするとインストールが始まります。手順に沿ってインストールを行ってください。
-
Retrieve+dbStoreをインストールすると、参照サイトが自動的に「LHD」に設定されます。デフォルトの参照サイトを変更したい場合はこちらをご覧ください。
なお、MATLABでは参照サイトを変更するコマンドが用意されています。詳しくはこちらをご覧ください。 - dbStoreはテンポラリファイルを作成します。デフォルトではカレントディレクトリに作成します。
テンポラリファイルを作成するディレクトリを変更したい場合はこちらをご覧ください。 - MATLABがインストールされていない場合はインストールを行ってください。
- MATLABを起動したときにRetrieve+dbStoreが利用できるよう、サーチパスに"$Retrieve/lib/matlab"を追加してください。もしくは、"$Retrieve/lib/matlab/startup.m"ファイルを、MTALABサーチパスのディレクトリにコピーしてください。すでにファイルがある場合は、内容を追記してください。
さぁ、これで準備ができたね。 次はdbStoreでデータの保存だ! |
|||
保存データの準備
MATLABを利用し、dbStoreで計測データ・パラメータを保存します。まずは、保存するデータの準備をしましょう。(dbStoreの使用方法はこちらをご覧ください)
STEP1 | 登録するデータの準備をしよう |
---|
登録するデータをdataに格納します。(図1参照)
例)
data = zeros(1000, 1, 'single'); …データを格納します
データ表示してみましょう。(図1参照)
plot(data); …データを表示します
これでdataにデータが格納されたことがわかりましたね。(図2参照)
dbStoreでパラメータを登録しない場合は、パラメータを格納しよう(STEP2)は必要ありませんので、次のデータの保存にお進みください。
STEP2 | パラメータを格納しよう |
---|
pl = initParamList(); …パラメータを格納するための配列plを作成します
パラメータを配列にセットするんだね。 | ||
次に、準備した配列plにsetParamでパラメータを格納します。(図3参照)
setParamは、パラメータ配列名、パラメータ名、パラメータ値の順に指定します。
pl = setParam(pl, 'offset', 10.0);
pl = setParam(pl, 'gain', int32(2));
これでパラメータ配列の準備ができました。
データの保存
保存データの準備で用意したデータ配列(data)、パラメータ配列(pl)を、データ名「LABCOM」に登録してみましょう。(dbStoreの使用方法はこちらをご覧ください)STEP1 | データの登録を開始しよう |
---|
dbsOpenは、登録者メールアドレス、データ名、ショット番号、サブショット番号、データタイプの順に指定します。
des = dbsOpen('', 'LABCOM', 50500, 1, 'RAW'); …ショット番号を指定しデータの登録を開始します
STEP2 | データを格納しよう |
---|
dbsWriteは、dbs識別子、チャネル番号、パラメータ配列、チャネルデータの順に指定します。
では、保存データの準備で準備したデータ配列data、パラメータ配列plを指定し書き込んでみましょう。(図4参照)
code = dbsWrite(des, 1, pl, data, 'verbose'); …データ配列とパラメータ配列を内部バッファーに書き込みます
※パラメータを空で登録する場合は'struct([])'を、チャネルデータを空で登録する場合は'int16([])'を指定します。
例)
code = dbsWrite(des, 1, struct([]), data, 'verbose'); …パラメータを空で書き込みます
code = dbsWrite(des, 2, pl, int16([]), 'verbose'); …チャネルデータを空で書き込みます
複数チャネルを登録する場合はdbsWriteをチャネル数だけ繰り返します。
なお、パラメータ配列plは、dbsWriteの実行後、変更されませんのでそのまま利用できます。パラメータの内容を変更する場合はパラメータ配列plを再度格納した後dbsWriteを実行してください。
うまく登録できるかなぁ。 | ||
STEP3 | データベースにデータを登録しよう |
---|
dbsClose(des); …データをデータベースに転送し登録を終了します
これでデータベースにデータの登録ができました。
STEP4 | 登録したデータを確認しよう |
---|
[data param code] = retrieve('LABCOM', 50500, 1, 1); …登録したデータを読み込みます
取得したデータを表示してみましょう。(図5参照)
plot(data{1}); …チャネルデータを表示します
登録元のデータ(図2参照)と同じグラフが表示されましたね。(図6参照)
これでデータが正しく登録されていることがわかりました。
次にパラメータを表示してみましょう。(図5参照)
printparam(param); …パラメータを表示します
登録したパラメータのoffset、gainの値は同じですね。(図5参照)(その他のパラメータは、dbStoreで登録すると自動的に付加されるものです)
これでデータが正しく登録されているのがわかりました。
フレームデータの保存
フレームに対応したカメラ画像データをdbStoreで登録することができます。こちらでは、Retrieveで取得したフレームデータをそのまま登録する方法を説明します。(dbStoreの使用方法はこちらをご覧ください)
STEP1 | 保存するフレームデータの準備をしよう |
---|
[data param code] = retrieve('TESPEL-CCD', 94000, 1, 0); …フレームデータを取得します
カラーマップをグレーに変更します。(図7参照)
colormap gray …カラーマップでgrayを指定します
取得したデータは3次元配列(幅、高さ、フレーム数)で格納されています。最初のフレーム画像を表示してみましょう。(図7参照)
image(data{1}(:, :, 1)'); …最初のフレームを表示します
最初のフレーム画像が表示されましたね。(図8参照)
次に、パラメータを確認してみましょう。
printParam, params …取得したパラメータを表示します
ここで必要なのは、ImageType(チャネル配列データのデータ型)、SampledFrame(収集したフレーム数)、AcquisitionWindowWidth(画像幅)、AcquisitionWindowHeight(画像高さ)の4つのパラメータです。
それぞれの値は次のようになっていました。(図9参照)
フレームデータを登録する方法は2種類あるんだね。 | ||
1 AcquisitionWindowWidth 640 int32
1 AcquisitionWindowHeight 480 int32
1 ImageType GRAY8 char
1 SampledFrame 300 int32
STEP2 | フレームデータを保存しよう |
---|
dbsWriteFrame (1フレームづつ登録) CASE1へお進みください。
dbsWriteFrames (複数フレーム同時登録) CASE2へお進みください。
CASE1 | 1フレームづつ登録する |
---|
初めにショットデータの登録を開始します。(図10参照)
des = dbsOpen('', 'LABCOM', 94010, 1, 'RAW'); …データの登録を開始します
次にdbsOpenFrameでフレームデータの登録を開始します。
dbsOpenFrameは、dbs識別子、チャネル番号、フレームのX方向サイズ、フレームのY方向サイズ、チャネルデータのデータ型の順に指定します。
先程取得したパラメータを確認した所(図9参照)、画像幅は640、画像高さは480、データ型はGRAY8でしたので、それぞれ指定します。(図10参照)
code = dbsOpenFrame(des, 1, 640, 480, 'GRAY8'); …フレームの登録を開始します
次はdbsWriteFrameでフレームデータを登録します。
dbsWriteFrameは、dbs識別子、チャネル番号、フレーム番号、フレームデータの順に指定します。
Retrieveで取得したフレームデータ配列dataの1フレーム目(data{1}(:, :, 1))を指定してみましょう。(図10参照)
code = dbsWriteFrame(des, 1, 1, data{1}(:, :, 1)); …1フレーム目を登録します
複数フレームを登録する場合は、dbsWriteFrameをフレーム数だけ繰り返します。
例)
code = dbsWriteFrame(des, 1, 2, data{1}(:, :, 2)); …2フレーム目を登録します
code = dbsWriteFrame(des, 1, 3, data{1}(:, :, 3)); …3フレーム目を登録します
なお、この後説明するCASE2のdbsWriteFramesですと、一度に複数フレームを登録することができますので、複数フレームの登録する場合は、dbsWriteFramesをご利用ください。
次にdbsCloseFrameでフレームの登録を終了します。
dbsCloseFrameは、dbs識別子、チャネル番号、パラメータ配列の順に指定します。(図10参照)
code = dbsCloseFrame(des, 1, struct([])); …フレームの登録を終了します
最後にショットデータの登録を終了します。(図10参照)
dbsClose(des); …データの登録を終了します
これでフレームデータが登録できました。
STEP3に進み、登録したフレームデータを確認してみましょう。
CASE2 | 複数フレームを同時に登録する |
---|
dbsWriteFrames以外(dbsOpen、dbsOpenFrame、dbsCloseFrame、dbsClose)はCASE1と同じですのでそちらを参考にしてください。
では登録してみましょう。(図11参照)
des = dbsOpen('', 'LABCOM', 94011, 1, 'RAW'); …データの登録を開始します
code = dbsOpenFrame(des, 1, 640, 480, 'GRAY8'); …フレームの登録を開始します
次はdbsWriteFramesで一度にすべてのフレームデータを登録します。
dbsWriteFramesは、dbs識別子、チャネル番号、開始フレーム番号、フレーム数、フレームデータの順に指定します。
先程取得したパラメータを確認した所(図9参照)、SampledFrameは300でしたので、フレーム数は300を指定します。
code = dbsWriteFrames(des, 1, 1, 300, data{1}); …300フレームを同時に登録します
code = dbsCloseFrame(des, 1, struct([])); …フレームの登録を終了します
dbsClose(des); …データの登録を終了します
これで300フレーム分のデータが登録できました。
STEP3に進み、登録したフレームデータを確認してみましょう。
STEP3 | 登録したフレームデータを確認しよう |
---|
[fdata fparam code] = retrieve('LABCOM', 94010, 1, 0); …フレームデータを取得します
フレーム画像を表示してみましょう。(図12参照)
image(fdata{1}(:, :, 1)'); …0フレーム目を表示します
登録した画像(図8参照)と同じですね。(図13参照)
これでデータが正しく 登録されているのがわかりました。
データの登録のキャンセル
dbsOpen、dbsWrite、dbsWriteFrame等でエラーが返ってきた場合、ショットデータの登録処理を途中でキャンセルすることができます。キャンセルすることにより、作成したテンポラリファイル等リソースを解放します。STEP1 | データの登録をキャンセルしよう |
---|
des = dbsOpen('', 'LABCOM', 94003, 1, 'RAW'); …データの登録を開始します
登録を途中でキャンセルできるんだね。 | ||
code = dbsAbort(des); …データの登録をキャンセルします
作成されたテンポラリファイルが削除されましたね。
これでデータの登録がキャンセルできました。
再登録する場合は、dbsOpenからやり直してください。
エラーコードの取得
dbStoreの各関数では、エラーコードを取得することによって、データが正しく格納できたかどうか、またエラーの場合どういう内容なのかを知ることができます。dbsWrite、dbsOpenFrame、dbsWriteFrame、dbsWriteFrames、dbsCloseFrame、dbsClose、dbsAbortでは、成功の場合はcodeに0が、エラーの場合は 0以外(エラーコード) が返ってきます。
dbsOpenでは、成功の場合はdes識別子に 0以上 が、エラーの場合は 負の値(エラーコード) が返ってきます。
setParamでは、成功の場合はcodeに true が、エラーの場合は false が返ってきます。
エラーコードの内容は、Retrieve+dbStoreパッケージに含まれているdbStore Error Codes(dbstoreErrorCode.htm)で確認できます。
参照方法:[スタート]→[すべてのプログラム]→[LABCOM Retrieve+dbStore *.*.*]→[dbStore Error Codes]
こちらでは、dbsWriteのエラー参照方法を説明します。他のものもエラーの参照方法は同じですので、こちらを参考にしてください。
STEP1 | エラーコードを取得しよう |
---|
data = zeros(1000, 1, 'single'); …登録するデータを作成します
des = dbsOpen('', 'LABCOM', 94003, 1, 'RAW'); …登録を開始します
エラーを参照するには、'verbose'を指定します。こちらは必要に応じてメッセージを出力してくれます。
code = dbsWrite(des, 1, struct([]), data, 'imagetype', 'int', 'verbose'); …イメージタイプに間違った値を入れます
どんなエラーなのか、エラーコード表を見ればわかるんだね。 | ||
こちらを実行すると、
Error from DLL( dbsWrite5 ) ! -27 : Illegal image type.
というメッセージが表示されます。
エラーコードが -27 ですのでdbsWriteは正しく実行されていません。(図15参照)
エラーの内容をdbStore Error Codesで確認してみましょう。
これでdbsOpenが正しく実行されなかった原因がわかりましたね。
保存したデータの削除
dbStreで登録した計測データ・パラメータを削除することができます。間違えて登録したり、必要ないデータは削除すればいいんだね。 | ||
STEP1 | データを削除しよう |
---|
削除の準備が整うとLABCOMよりメールが届きます。
メールに記入してあるURLをクリックします。
削除画面が開きますので、内容を確認後「データ削除実行」をクリックしてください。
これでデータが削除されます。
STEP2 | データが削除されているか確認しよう |
---|
参照方法:LABCOMホームページ(http://w3.lhd.nifs.ac.jp)-「収集運転」-「集録データの検索」-「計測名より検索」
こちらでショット番号が表示されなければ、データが削除されているということになります。
dbStoreのアンインストール
アンインストールは「コントロールパネル」-「アプリケーションの追加と削除」で行なってください。アンインストールを行うと、環境変数も自動的に削除されますが、うまく削除されない場合があります。
その場合は、手動で次の環境変数を削除してください。
- Retrieve
- INDEXSERVERNAME
- DBSTORE_TMP(作成した場合のみ)
アンインストールで自動的に環境変数も削除してくれるんだね。 | |||
クイズに挑戦!
こちらで勉強したことが理解できているかどうか、クイズに挑戦してみましょう!*全問正解者にはもれなくLABCOMより豪華記念品を贈呈します!皆さん、ふるってご解答ください。
クイズの実行にはJRE(Java Runtime Environment)が必要です。
Oracleのサイトから最新版のJREをダウンロードし、インストールを行ってください。
また、IEをご利用の場合は、「ツール」→「インターネットオプション」で「詳細設定」タブをクリックし、「設定」で「Java(Sun)」の「<applet>にJava2を使用(再起動が必要)」にチェックを入れ「適用」をクリックし、その後IEを再起動してください。