NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

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

解決済み
解決策を見る

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

 

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

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

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

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

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

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

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

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

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

 

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

0 件の賞賛
メッセージ1/16
5,310件の閲覧回数

平素より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 件の賞賛
メッセージ2/16
5,249件の閲覧回数

上野様

 

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

送っていただいたデータなのですが、私の今使っている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 件の賞賛
メッセージ3/16
5,225件の閲覧回数

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

Data-Operation.png

 

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

 

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

 

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

すべてをダウンロード
0 件の賞賛
メッセージ4/16
5,214件の閲覧回数

上野様

 

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

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

 

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

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

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

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

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

 

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

0 件の賞賛
メッセージ5/16
5,188件の閲覧回数

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

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

 

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

0 件の賞賛
メッセージ6/16
5,182件の閲覧回数

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

 

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

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

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

  4. データ値として処理する場合、配列から特定のデータを抽出する際に使用できるのは、部分配列関数や指標配列関数です。適切な要素を指定することで任意の要素を抽出可能です。
0 件の賞賛
メッセージ7/16
5,169件の閲覧回数

上野様

 

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

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

抽出したデータを用いて

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

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

 

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

0 件の賞賛
メッセージ8/16
5,138件の閲覧回数

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

 

SS2.png

0 件の賞賛
メッセージ9/16
5,128件の閲覧回数

上野様

 

返信遅れてすみません。

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

 

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

 

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

すべてをダウンロード
0 件の賞賛
メッセージ10/16
5,094件の閲覧回数