09-16-2011 07:50 AM
始めまして,よろしくお願いします.
大学の研究でLabViewを使用しており,
配列の任意に選択したx行y列の値をDAQへ出力し,応答を処理して任意のxx行yy列へ格納するということを100回や1000回繰り返し行うVIを作成しようとしています.
具体的に行いたいことは,
① 10×10の行列を用意し,初期値を設定する.
② 任意のx,yをVIに与え,x行y列の要素の値をDAQに出力する.
③ ②の10秒後の応答をDAQで測定する.
④ ③で得た値を計算(a倍)した値を得る.
⑤ ④の値を任意のxx,yyをVIに与えてxx行yy列に格納する.
⑥ ②~⑤をn回繰り返す.
⑦ 最終的な10×10の行列をファイルに出力する.
これらの工程について,部分部分を作成して確認している段階です.
④までの初期値の設定やDAQの入出力,場合分け等については問題なく行えているのですが,
⑤の行列への入力が希望通りできず,詰まっています.
ひとまず入力に波形生成VIを用いて,行列として配列を使用して作成しているのですが,
任意の要素の選択や,以前の値の保持の方法が理解できておらず,
実行すると1行1列の場所が選択され,(1,1)に値が入力されるのみで他の要素の値が0となってしまいます.
目的としている配列として行いたい操作はこんな感じです.
配列の理解が不足していることが原因だと思うのですが,アドバイス等いただければありがたいです.
よろしくお願いします.
解決済! 解決策の投稿を見る。
09-19-2011 01:41 AM
Replace Array Subset を使ったのではダメですかね?
添付図では第3行第4列の値を0から1に変更しています。
的外れな返答でしたらご勘弁を。
09-19-2011 09:11 AM - 編集済み 09-19-2011 09:13 AM
>>任意のxx,yyをVIに与えてxx行yy列に格納する
のところは、tty様のように、Replace Array Subset で、行と列を指定して要素(または部分配列)をつなげば、
その要素だけ書き換えられます。
もう1つの、
>>任意の要素の選択や,以前の値の保持の方法が理解できておらず,
>>実行すると1行1列の場所が選択され,(1,1)に値が入力されるのみで他の要素の値が0となってしまいます.
で、「以前の値の保持の方法」は、100回、1000回とループを回すようなので、「シフトレジスタ」というものを
使えば良いかと思います。ForやWhileなどのループの左右の「へり」の部分で、右クリックして作ることができます。
▼と▲の対のマークが出るので、左から、ループに入る際の初期値を、ループの中で配列に対する
処理を書き、つなぐと、ループを回るたびに、前のループで処理した結果が次の回で左から出てきます。
最後にループを抜けるとき、右側から出てきます。
添付は、そのあらましを書いた、(動作上はほとんど無意味な)ダイアグラムです。
なお、LabVIEWの配列は、先頭要素は1行1列ではなく、0行0列なのと、2次元配列で
要素を指定するときは、行・列の順(Y→Xの順)に指標を指定しますので、ご留意下さい。
09-22-2011 03:20 AM
tty様,M.Shiraishi様ありがとうございます.
いただいたサンプルを元にVIを作成できそうです.
また分からないことがありましたら,よろしくお願いします.