LabVIEW +
ソフト開発 +
実験・研究装置開発 +
システム開発 +
納入事例 +
会社概要 +
配列とは、パソコン内部のデータをやり取りする時に使われる単位の1つです。数値や文字列などの情報を1つのカタマリにすることで、データの管理を簡単に行うことができます。
LabVIEWでは特に、測定結果データの一時保存先として配列が使われます。測定結果データは最終的なデータの個数が決まっていない場合が多く、あらかじめ保存先を用意しておくのが難しいです。配列はデータの個数が定まらない場合でも保存先として使用することができます。
また、配列に保存されたデータはグラフ表示やCSV(Comma-Separated Values)ファイル出力を簡単に行うことができます。
配列にまとめることができるのは、同じ種類の数値、文字列だけです。
LabVIEWには15種類の数値があります。種類の違う数値は同じ配列に入れることができません。
LabVIEWで使うことができる数値の種類(表記法)は、4つに分類されます。
扱える数値の範囲(0~255など)によってさらに種類が分かれ、合計15種類となります。
小さな整数しか扱わないのに、大きな少数まで扱える表記法を選択すると、メモリを無駄に使用することになります。そのため、表記法の選び方によってはパソコン全体が重くなってしまうこともあります。
例として、少数を扱える「倍精度」で1万データの配列を使用すると約300キロバイトのメモリを使用します。同じデータを、整数を扱う「ワード整数」で使用すると約100キロバイトと1/3のメモリ使用になります。
1次元配列は、数値や文字列が1方向に並んだデータです。
身近なものの例として、トランプゲームの持ち札やストップウォッチのラップタイム機能を1次元配列で再現できます。
トランプには、「ハート、ダイヤ、スペード、クローバー」の4種類のマークに「1~13」までの数字がついています。
配列を使わずにトランプゲームを再現する場合、下図のように持ち札1枚ずつにマークと数字を指定する必要があります。持ち札の枚数が増減する場合や持ち札が変わる場合は配列を使うと管理が簡単になります。
1人分の持ち札を1つの配列で用意することができます。持ち札の増減にも簡単に対応できます。
配列にまとめられた要素は「0番」からはじまる番号(指標)で管理されています。持ち札の0番要素は「ダイヤ1」、1番要素は「クローバー10」、2番要素は「ダイヤ9」でしたが、削除され「ハート3」に変わりました。
要素を削除したいときは、「配列から削除関数」に番号を指定します。
下図の例では、「配列から削除関数」に現在の持ち札を渡し、「2番要素」を「1つ削除」して出力しています。
配列に要素を追加したいときは、「配列に挿入関数」を使います。
下図の例では、「ダイヤ9」が削除された持ち札に、「スペード6」を追加しています。
ストップウォッチの時間は止めず、ボタンが押されたタイミングを記録するラップタイム機能を配列で再現します。
ラップタイム機能は1回の測定中に何回使用するか決まっていないため、記録用の数値表示器をあらかじめ作成しておくことはできません。
記録されたラップタイムを「,(コンマ)」区切りで1つの表示器に入れることはできますが、読み取ることが難しくなります。また、複数の数値をコンマで区切ることはできないので、文字列に変換する必要もあります。
ラップタイムを配列に記録していくことで問題が解決します。
プログラムの開始時に空の配列を作成し、初期化しています。「記録ボタン」が押される(TRUEになる)と経過秒数を配列に追加し、ラップタイムとして表示しています。
配列には、シフトレジスタを使用し、1ループ前のデータを持ち越すことでラップライムを蓄積しています。
LabVIEWで配列を初期化する方法は2種類あります。配列の大きさがあらかじめ分かっている場合と分かっていない場合です。
データが入っていない、空の配列を使用します。
配列初期化関数を使います。配列初期化関数では、1次元、2次元それぞれの方向ごとにデータ数を定め、その範囲を、指定した数値や文字列で埋めます。
下図の使用例は、1次元方向に「5データ」、2次元方向に「3データ」、文字列「初期化」を指定して配列初期化を行った結果、出力される配列です。
2次元配列は1方向だけでなく、2方向にデータが並ぶ配列です。2次元配列は2つに分類されます。
1次元配列では、1人分の持ち札を1つの配列に入れ込みました。2次元配列では、トランプゲームの参加者を4人と仮定し、それぞれの持ち札を1つの配列で管理します。
下図のように持ち札A~Dの配列を縦に並べたものが2次元配列です。2次元配列では、行数を増やすだけで持ち札の総数(参加人数)を増やすことができます。
2次元配列は、0から始まる列と行で構成されています。
2次元配列では、「配列から削除関数」を使用して、1つの要素を削除することはできません。削除は1列、1行単位で行われます。下図の例は2行目から1行削除した結果です。
2次元配列で1つの要素を削除したい場合、1列、1行単位のデータを1次元配列で取り出し、要素を削除後、元の2次元配列に戻します。
下図の例では、「指標配列関数」を使って1行目のデータを取り出し、「部分配列置換関数」を使って1番要素を空白に置き換え、「部分配列置換関数」で元の手札を削除後の手札に置き換えています。
2次元配列への要素の追加も削除と同じく1列、1行単位で行われます。
下図の例では、手札の2次元配列にヘッダの1次元配列を「配列連結追加関数」を使用し追加しています。
1次元配列では、ラップタイムとして残した記録は、再スタート時に初期化されていました。2次元配列を使うと、再スタート後もデータを残し、何度も蓄積することができます。
記録ボタンが押されると、ラップタイム配列に経過時間が記録されます。タイマーリセットボタンが押されると、ラップタイム記録が、2次元配列に蓄積され、経過時間が0にリセットされます。
掛け算の九九表は2次元配列で作成することができます。
1の段、2の段、3の段・・・9の段まで1次元配列を作成し、まとめ、2次元配列の九九表を作成しています。
配列を使うメリットは、データの管理が簡単になることです。
配列を使わない場合、画面に表示する数値1つ1つに表示器をつける必要があり、手間がかかります。
配列を使うと、データをまとめて管理できるため、作業量が減り、画面も見やすくなります。
配列にデータをまとめることで、グラフ表示やCSVファイル出力を行うことができます。CSVファイルはエクセルで開くことができ、より詳細なグラフや資料を作成できます。
LabVIEWでは、配列にまとめられたデータを簡単にグラフ化することができます。配列の要素が更新されると、リアルタイムでグラフも更新されます。
下図はラップタイムの記録をCSVファイルに出力したデータです。グラフ表示やソートなど、エクセルファイルと同じ扱いができます。
「使い方はわかったけれど、実際の業務で使うシステムを作る時間がない」「もっと高度な制御をプロに任せたい」という方は、ぜひ一度ご相談ください。
測定代行株式会社は、ラボビュー(LabVIEW)を用いた受託開発・システム構築のスペシャリストです。
お客様のご要望(自動計測、自動制御、プロセス制御、データ解析、古いバージョンの更新、温調器制御など)に合わせ、最適なシステムを一番に提案・開発いたします。