08-26-2019 09:31 AM
日本ナショナルインスツルメンツ技術部様
現在、粒子の流れを可視化するためにPIV計測を行っています。
添付の写真はその計測を行ったとき平均のコンター図となっています。
コンター図は添付のパワーポイントの1枚目のようにx方向、z方向の位置での粒子の速さuを表した図となっていて
速さにより色分けされた図になっています。
そのx,zの位置での速さuなどの数値データが添付のdatファイルになっています。
そのdatファイルのデータをExcelに読み込んで添付のパワーポイントのような手順でデータ整理を行って、
最後のスライドのようなグラフを得ることを行っています。
このようなグラフを添付のdatファイルを用いて同じようなグラフを取得するには
Labviewでどのようにプログラムしていけばよいでしょうか。
よろしくお願いいたします。
解決済! 解決策の投稿を見る。
08-26-2019 10:57 PM
平素よりNI製品をご愛顧頂きありがとうございます。
日本ナショナルインスツルメンツ技術部の上野です。
Excelによるデータ整理手順が長いため、まずは半分(ページ8まで)の流れをまとめると以下のようになります。
添付いただいたdatデータはテキストデータですので、ファイルからの読み取りは容易です。区切られたスプレッドシートから読み取るVIにデリミタとしてスペース定数を指定すれば、データ部分を2次元配列として読み取れます。あとは、読み取った2D配列の操作となります。
添付ファイルのように必要なデータを抽出したら後半の手順が作成できるかと思います。
自分は、添付いただいた資料だけではうまく理解できませんでした。
たとえば、以下のような点が不明です。
後半は、各データ配列に対してオフセットを加えたりする演算処理かと思いますので、ご自身で配列操作やグラフ化などコーディングをお試しいただき、具体的な不明点やうまくいかない点を教えていただけると幸いです。
08-29-2019 05:49 AM
上野様
回答ありがとうございます。
送っていただいたデータなのですが、私の今使っているLabview2017(17.0f2)32bitでは開けませんでした。
開けるファイルで送っていただけませんでしょうか。
次に、資料の不明な点について回答させていただきます。
資料のエクセルの数値とdatファイルから計算したものが合わないことに関しては、資料のものが添付したdatファイルと異なるからだと思われます。
すみませんでした。
Lについては実験的にはノズルからカメラの撮影範囲の左端との距離で添付のパワーポイントの資料のxの値を補正値に変換するというところのxに足し合わせる補正用の値になります。
最後にyとZに関してですが、yではなくzです。
資料に間違いがあったので修正したいのですが、zを補正値に変換のところでC1-(C$1+C$63)/2とありますがC1+(C$1-C$63)/2が正しい式です。
そのスライドでの説明ではわかりにくかったと思うのですがC$63は同じ値のxのなかで最大のzの値になります。それを他のxにおけるzでも行っています。
参考にデータ整理用のexcelデータも送らせていただできます。
よろしくお願いいたします。
08-29-2019 02:06 PM
前回添付したVIのダイアグラムは、以下のとおりです。
このコードの4番目に使用している2Dソートが旧バージョンにはございませんので、旧バージョンで保存してお渡しすることはできません。
そのため、今回添付したVIは、下記のサンプルプログラムを使用しています。
まずは、算出するためにファイル読み取りと抽出をおこない配列ファイルの操作をお試しいただければと思います。
08-30-2019 02:10 AM
上野様
返信ありがとうございます。
今回添付されたVIで実行できて、必要なデータの抽出ができました。
この後のことで質問があるのですが、
1.配列内の最大値の抽出方法
2.パワーポイントの12ページ付近のことで、最大値の半分の値に最も近い二つの値を抽出する方法
3.配列を用いてグラフを作成する方法
を教えていただきたいです。
よろしくお願いいたします。
08-30-2019 02:53 AM
追加で質問があるのですが
4. Zの補正値を出すときに配列から特定の値を抽出したいのですが、xの値が同じ範囲でzの最小と最大の値をxの値が切り替わる度に抽出して演算する方法を教えていただきたいです。
よろしくお願いいたします。
08-30-2019 04:48 AM
ご確認ありがとうございます。追加のご質問の回答は以下のとおりです。
09-03-2019 10:13 AM
上野様
返信ありがとうございます。
返信していただいたものを参考にプログラムを作成しているのですが
抽出したデータを用いて
それぞれのXでの(上から順番に)uの最大値を抽出し、それらを新たに配列としたいんですが
どのように作成をしていったらよいでしょうか。
よろしくお願いいたします。
09-03-2019 12:26 PM
Xデータを含む3次元配列、もしくはXデータだけの2次元配列をForループを用いて1次元データから最大値を抽出して、Forループの自動指標付けをして出力することにより、最大値だけの新しい配列となります。
09-11-2019 10:13 AM
上野様
返信遅れてすみません。
Xの最大値を配列化したいのではなく、同じ数値のXにおけるuの最大値を配列にして抽出したいです。
具体的には、添付ファイルの「Data Operation2(2)」に 「average.dat」を読み込ませたときの「転置配列2」の1列目の同じ数値での2列目の最大値を抽出し続けて、それを配列にしたいです。
よろしくおねがいいたします。