NI製品ディスカッション

cancel
Showing results for 
Search instead for 
Did you mean: 

Excelで行っているデータ整理をLabviewを用いて行いたいのですが

Solved!
Go to solution

日本ナショナルインスツルメンツ技術部様

 

現在、粒子の流れを可視化するためにPIV計測を行っています。

添付の写真はその計測を行ったとき平均のコンター図となっています。

コンター図は添付のパワーポイントの1枚目のようにx方向、z方向の位置での粒子の速さuを表した図となっていて

速さにより色分けされた図になっています。

そのx,zの位置での速さuなどの数値データが添付のdatファイルになっています。

そのdatファイルのデータをExcelに読み込んで添付のパワーポイントのような手順でデータ整理を行って、

最後のスライドのようなグラフを得ることを行っています。

このようなグラフを添付のdatファイルを用いて同じようなグラフを取得するには

Labviewでどのようにプログラムしていけばよいでしょうか。

 

よろしくお願いいたします。

0 Kudos
Message 1 of 16
(311 Views)

平素よりNI製品をご愛顧頂きありがとうございます。
日本ナショナルインスツルメンツ技術部の上野です。

 

Excelによるデータ整理手順が長いため、まずは半分(ページ8まで)の流れをまとめると以下のようになります。

 

  1. datデータを読み取る
  2. デリミタとしてスペース定数を設定してデータを配列要素に分ける
  3. 不要なヘッダ要素を削除する
  4. 昇順に並べ替える
  5. 必要なデータのみを抽出する

 

添付いただいたdatデータはテキストデータですので、ファイルからの読み取りは容易です。区切られたスプレッドシートから読み取るVIにデリミタとしてスペース定数を指定すれば、データ部分を2次元配列として読み取れます。あとは、読み取った2D配列の操作となります。

 

添付ファイルのように必要なデータを抽出したら後半の手順が作成できるかと思います。

自分は、添付いただいた資料だけではうまく理解できませんでした。

たとえば、以下のような点が不明です。

 

  • 9ページ目で選択されているセルの数式が=C1-(C$1+C$63)/2となっていますが、そのようにしても206.0945となりません。
  • Lとは何を示してしますか?
  • 6ページ目に「必要なデータはx、y、uのみなので、他は削除」とありますが、10ページ以降Zがでてきます。Yの補正値をZと示しているように感じました。

後半は、各データ配列に対してオフセットを加えたりする演算処理かと思いますので、ご自身で配列操作やグラフ化などコーディングをお試しいただき、具体的な不明点やうまくいかない点を教えていただけると幸いです。

 

 

0 Kudos
Message 2 of 16
(250 Views)

上野様

 

回答ありがとうございます。

送っていただいたデータなのですが、私の今使っている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データも送らせていただできます。

よろしくお願いいたします。

 

 

 

0 Kudos
Message 3 of 16
(226 Views)

前回添付したVIのダイアグラムは、以下のとおりです。

Data-Operation.png

 

このコードの4番目に使用している2Dソートが旧バージョンにはございませんので、旧バージョンで保存してお渡しすることはできません。

 

そのため、今回添付したVIは、下記のサンプルプログラムを使用しています。

 

まずは、算出するためにファイル読み取りと抽出をおこない配列ファイルの操作をお試しいただければと思います。

0 Kudos
Message 4 of 16
(215 Views)

上野様

 

返信ありがとうございます。

今回添付されたVIで実行できて、必要なデータの抽出ができました。

 

この後のことで質問があるのですが、

1.配列内の最大値の抽出方法

2.パワーポイントの12ページ付近のことで、最大値の半分の値に最も近い二つの値を抽出する方法

3.配列を用いてグラフを作成する方法

を教えていただきたいです。

 

よろしくお願いいたします。

0 Kudos
Message 5 of 16
(189 Views)

追加で質問があるのですが

4. Zの補正値を出すときに配列から特定の値を抽出したいのですが、xの値が同じ範囲でzの最小と最大の値をxの値が切り替わる度に抽出して演算する方法を教えていただきたいです。

 

よろしくお願いいたします。

0 Kudos
Message 6 of 16
(183 Views)

ご確認ありがとうございます。追加のご質問の回答は以下のとおりです。

 

  1. 配列から最大値を抽出する際には、関数パレット>>配列サブパレットにある配列最大&最小関数を使用可能です。

  2. データ値から抽出する場合、最大値を2で除算した値を配列要素と比較します。たとえば、下記の例では昇順の配列をForループで1要素ずつ比較してTrueになったらループを停止してそのときの指標を指標配列関数で抽出する指標に使用してその要素の前後も含めて抽出する方法が考えられます。
    Question2.png

  3. 波形グラフは、1次元配列を配線するとシングルプロット、2次元配列を配線すると複数プロットとなります。

  4. データ値として処理する場合、配列から特定のデータを抽出する際に使用できるのは、部分配列関数や指標配列関数です。適切な要素を指定することで任意の要素を抽出可能です。
0 Kudos
Message 7 of 16
(170 Views)

上野様

 

返信ありがとうございます。

返信していただいたものを参考にプログラムを作成しているのですが

抽出したデータを用いて

それぞれのXでの(上から順番に)uの最大値を抽出し、それらを新たに配列としたいんですが

どのように作成をしていったらよいでしょうか。

 

よろしくお願いいたします。

0 Kudos
Message 8 of 16
(139 Views)

Xデータを含む3次元配列、もしくはXデータだけの2次元配列をForループを用いて1次元データから最大値を抽出して、Forループの自動指標付けをして出力することにより、最大値だけの新しい配列となります。

 

SS2.png

0 Kudos
Message 9 of 16
(129 Views)

上野様

 

返信遅れてすみません。

Xの最大値を配列化したいのではなく、同じ数値のXにおけるuの最大値を配列にして抽出したいです。

 

具体的には、添付ファイルの「Data Operation2(2)」に 「average.dat」を読み込ませたときの「転置配列2」の1列目の同じ数値での2列目の最大値を抽出し続けて、それを配列にしたいです。

 

よろしくおねがいいたします。

0 Kudos
Message 10 of 16
(95 Views)