So-net無料ブログ作成

MT法のプログラムをLabVIEWで作ってみました [【最新ニュース】]

f11.png
年末年始を利用して、MT法のプログラムをLabVIEWで作ってみました。

----------------------
mmtt2.png
プログラムの概略は、
単位空間のデータ(CSV形式)と信号データ(CSV形式)を読み込み、「MD値」や「原因診断の結果」を出力するプログラムviです。
----------------------
fp42.png

あるデータを解析した結果の画面です。
(クリックで拡大できます)

左上のグラフは、OK品(40個)とNG品(50個)のMD値を棒グラフにプロットしたものです。
左下のグラフは、縦軸を拡大したものです。
OK品とNG品の判別が可能となっていることが分かります。

右上のグラフは、項目選択の結果を示しています。
一番効いている項目は、項目No.4です。
二番目に効いている項目は、項目No.3です。

右下のグラフは、NG品を個別に原因診断した結果を示しています。
画面では、1番目のNG品の原因診断の結果を示しています。
----------------------
fp82.png
【追記】
バージョンアップした画面です。
MD値の棒グラフをプロットする際、単位空間のデータを青色で着色し、信号データを赤色で着色するようにしました。
パッと見て分かりやすくなりました。

また、青の横線は、単位空間のMD値のmax値です。
白の横線は、信号データのMD値のmin値です。
これら2つの横線を見比べれば、判別可能かがひと目でわかります。
----------------------
dalog1.png

プログラムの一部です。
LabVIEW独特のグラフィカルプログラミングです。
線の上をデータが流れ、処理されるイメージです。

■プログラムの流れ
----------------------
1)項目数より大きな素数を求める
2)平方剰余からペイリーの巡回アダマール行列を作成し、原因診断に用いる直交表を作成する
3)単位空間のデータを規準化し、相関行列(共分散行列)を求める
4)相関行列の逆行列(疑似逆行列)を求める
5)信号データを規準化し、行列を計算してMD値(マハラノビスの距離)を求める
6)項目選択をする
7)個別に原因診断する
8)各種の結果をグラフにプロットする
9)必要に応じて、各種の結果をCSVファイルに書き出す
----------------------
このプログラムのために、以下の6つのサブvi(サブルーチンみたいなもの)を作りました。

・「素数を求める」サブvi
・「平方剰余を求める」サブvi
・「ペイリーの巡回アダマール行列を作成する」サブvi
・「MD値を求める」サブvi
・「望大特性のSN比を求める」サブvi
・「原因診断をする」サブvi
subvi.png
----------------------
hikaku2.png

このプログラムでの処理時間です。
----------------------
項目数 = 7個
単位データ = 50個
信号データ = 60個
原因診断時の直交表:L8
----------------------
上記の場合は、処理時間は「0.5sec」でした。

----------------------
項目数 = 93個
単位データ = 210個
信号データ = 180個
原因診断時の直交表:L98
----------------------
上記の場合は、処理時間は「66sec」でした。

2つ目はL98直交表を使っているため、計算量が多くなりますので、処理時間も1分強を要しました。
----------------------

なお、このプログラムを市販化する予定はありません。
あくまでも、弊社の研究用に作ったプログラムです。

今回のプログラミングで、行列や平方剰余を勉強したことで、線形代数学や整数論に興味を持ちました。