05-27-2025 08:57 PM
お返事ありがとうございます。
「バイナリファイルの説明.vi」で勉強させていただきます。
>>Z値だけの256×512配列から1行ずつ取り出して処理するのはForループが良いでしょう。
ひとまず保存ポイント数を65536(256×256)にして実行してみました。
また、Forループでトレース・リトレースに分ける前に、ファイルの中身を確認するために、「保存」の表示器を置きました。
私としては、「保存」表示器には、65536のデータ数、「トレース」「リトレース」表示器にそれぞれ32768データ数表示されると考えていました。
実際確認した結果、「保存」表示器には、59976のデータ数、「トレース」「リトレース」表示器にそれぞれ27720データ数表示されました。
指定したデータ数より少なくなってしまった原因はわかりますでしょうか。
また、Z値が一列に65536データ表示されると考えていたのですが、238×252=59976のように表示されていました。そのように指定している箇所は見当たらなかったので、原因がわかっておりません。Z値を一列に、または256×256で表示するにはどうすればよいでしょうか。
保存バイト数に関しても、131096と表示されていますが、今回の場合は238×252×2バイト=116928になるのではないでしょうか。
よろしくお願いいたします。
05-28-2025 02:38 AM
結果は正しいです。配列表示器の見方を勘違いしています。
配列制御器の指標表示は左上セルのインデックスを示します。従って「保存」表示器では左上の1が(238,252)です。セルは18行4列表示されているので、全体では256行×256列のデータが表示されています(右下のセルのインデックスは(255,255))。
同じく、「トレース」と「リトレース」表示器はともに128行×256列のデータを表示しています。
05-28-2025 05:13 AM
お返事ありがとうございます。
配列表示器の見方を勘違いしておりました。
65536(256×256)のデータを取得した際の表示器を添付します。
右下セルのデータのインデックスを確認したところ、(255,255)になっていました。
また、トレース・リトレースも(127,255)であることを確認しました。
次に131072(256×256×2)のデータ数を保存してみました(トレース・リトレースで256×256の画像をそれぞれ作るため)。以下がその添付画像です。
こちらも右下のインデックスが(511,255)であることを確認し、トレース・リトレースも(255,255)であることを確認しました。
トレース・リトレースの保存したファイルのデータを用いて、画像を描画するにはどうすればよいのでしょうか。(データ取得した時系列順でピクセルに(x,y)=(0,0),(1,0),(2,0)...(254,0),(255,0),(0,1),(1,1),(2,1)...(254,1),(255,1),(0,2),(1,2)...(254,2),(255,2)のように配置したい)
よろしくお願いいたします。
05-28-2025 06:31 AM
トレースとリトレースのデータをそのまま強度グラフに渡してみてください。元のVIにある「原子像」は強度グラフです。
05-28-2025 08:55 PM
お世話になっております。
グラフ化できました。ありがとうございます。
トレース・リトレースの振り分けのところで質問させてください。
上記の添付画像の「保存」の偶数行目がトレース、奇数行目がリトレースに振り分けられると認識しています。トレースの方はしっかり振り分けられていますが、リトレースは奇数行が振り分けられていないように見えます。
原因は何なのでしょうか。
また、トレース・リトレースのグラフをバイナリデータに保存しようと考えています。
上記のようにプログラムを組んだのですが、トレース・リトレースともに8バイトのファイルが複数できてしましました。私の考えでは、256×256×2バイト=131072のファイルがトレース・リトレースのファイルそれぞれで、1つずつ保存されるはずでした。
トレース・リトレースグラフ化のケースストラクチャからデータが出る際のトンネルの設定に問題があると考えていますが、具体的な対処方法がわかりません。
改善方法を教えていただけたら幸いです。
よろしくお願いいたします。
05-28-2025 10:29 PM - 編集済み 05-28-2025 10:30 PM
リトレースのデータ:
振り分けのときリトレース側のインデックスを反転しているせいです。
振り分けをしているForループ中の「1D配列反転」を削除すると直りますが、リトレースはXスキャン方向が逆なので画像が左右反転しませんか?
トレース保存:
LabVIEWのデータフロープログラミングが理解できていないことによる勘違いです。
データを読み込むケースストラクチャは「ファイル確認」ボタンがOFFのときにFALSEケースを実行しています。そのときトレースデータを出力するトンネルからは空の配列が出ているので、「トレース保存」時には空の配列を保存することになります。
「バイナリファイルに書き込む」関数の「配列または文字列サイズを先頭に追加? (T)」入力は、何も接続しないとTRUEなので、2次元配列の行と列のサイズを32ビット整数で書き込みます。32ビット×2個で8バイトです。(ちなみにサブVIの入力端子のラベルには、デフォルト値をカッコで囲って付けておくのがマナーです。)
解決方法としては(このプログラム構造の場合)
・ トレース保存の際「トレース」と「リトレース」表示器のローカル変数から読んで保存する。
・ トレース保存のコードをファイル確認ケースの中に入れてしまう。
くらいでしょうか。