From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

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

二次元配列に0を挿入する方法

解決済み
解決策を見る

一次元配列ではなく、二次元配列で0を挿入する場合、どのように組み立てればいいでしょうか。

配列

1  x1  y1
2  x2  y2
3  x3  y3
4  x4  y4
5  x5  y5
10  x10  y10
11  x11  y11
12  x12  y12
13  x13  y13
14  x14  y14
15  x15  y15
18  x18  y18


NEW配列


1  x1  y1
2  x2  y2
3  x3  y3
4  x4  y4
5  x5  y5
0  0   0
0  0   0
0  0   0
0  0   0
10  x10  y10
11  x11  y11
12  x12  y12
13  x13  y13
14  x14  y14
15  x15  y15
0   0      0
0   0      0
18  x18  y18

といったふうにしたいのです。
x、yの値は規則性のない変数です。

1列目に0を挿入した行全てに、同じように0を挿入するプログラムがわかりません。

度重なる質問、本当に申し訳ありません。

わかるかた、ご回答よろしくお願いします。

0 件の賞賛
メッセージ1/10
5,566件の閲覧回数
解決策
トピック作成者RYO1221が受理

こんにちは。

 

こんな感じでしょうか。以前KONDOH さんが作成されたVI を編集してみました

 

InsZeroToArray3.png

 

 

0 件の賞賛
メッセージ2/10
5,554件の閲覧回数

doradorachan 様

 

返信が遅れて申し訳ありません。

 

添付していただいたviを参考に、問題を解決することができました。

ご丁寧な指導、まことにありがとうございました。

 

もう一つだけ質問なのですが、

 

配列

1  x1  y1
2  x2  y2
3  x3  y3
4  x4  y4
5  x5  y5
10  x10  y10
11  x11  y11
12  x12  y12
13  x13  y13
14  x14  y14
15  x15  y15
18  x18  y18

 

上記のような配列から、

 

配列2

 

3  x3  y3
4  x4  y4

12  x12  y12
13  x13  y13
14  x14  y14

 

 

の部分だけ配列から削除し、

 

 

配列3

 


1  x1  y1
2  x2  y2

5  x5  y5
10  x10  y10
11  x11  y11

15  x15  y15
18  x18  y18

 

 

配列3の結果を得る、引き算のような方法を教えて頂きたいです。

 

前回の質問と同様、x、yは規則性のない変数を表しております。

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

 

 

0 件の賞賛
メッセージ3/10
5,516件の閲覧回数

こんにちは、

 

「配列から削除」が探している関数ではないでしょうか。

 

配列から削除 関数 - LabVIEW 2015ヘルプ - National Instruments
http://zone.ni.com/reference/ja-XX/help/371361M-0112/glang/delete_from_array/

 

設定としては:

「指標(行)」でどの行から削除する、RYO1221さんの場合はおそらく指標の「2」になります。

「長さ」で何個の行を削除する、RYO1221さんの場合では「5」個の行になります。

 

0 件の賞賛
メッセージ4/10
5,495件の閲覧回数

foxhound73様

 

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

 

「配列から削除」を用いた場合、私の望むような結果にはならないようです。

 

完全に自分の説明不足でした。

本当に申し訳ありません。

 

配列                 削除配列

 

1  x1  y1             3  x3  y3              
2  x2  y2             4  x4  y4
3  x3  y3                               12  x12  y12
4  x4  y4             ―               13  x13  y13
5  x5  y5             14  x14  y14
6  x6  y6   
7  x7  y7
8  x8  y8
9  x9  y9
10  x10  y10
11  x11  y11
12  x12  y12

13  x13  y13

14  x14  y14

 

 上記のように、引き算のような処理を行い、

 

1  x1  y1

2  x2  y2 

5  x5  y5
6  x6  y6   
7  x7  y7
8  x8  y8
9  x9  y9
10  x10  y10
11  x11  y11

 

 

削除配列を、元の配列から0列目の数に対応した行を削除したいです。

アドバイスをお願いします。

 

前回の質問と同様、x、yは規則性のない変数を表しております。

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

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

foxhound73 さんの言う通り、配列から削除の関数でできます。

もちろん配列から削除の関数では、バラバラの行や列を一度に削除できないので、

ループやシフトレジスタを使用する必要があります。

 

前回添付したサンプルなどを参考に一度試してみてから、また聞いてください。

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

doradorachan様

 

適格なアドバイス、ありがとうございます。

 

基本的な部分が理解できていませんでした。

 

今後とも、宜しくお願いいたします。

0 件の賞賛
メッセージ7/10
5,460件の閲覧回数

doradorachan様のアドバイス通り、下図のviを試したのですが、配列から削除したい部分が、正しく削除されませんでした。

どこに原因があるのかが、わかりません。

 

2.png

 

 

 

 

具体的には、下図の画像のように、2-1.png

「削除配列2(右)」部分(0行目、158~173区間)が、右の「配列」から削除されるはずが、

削除されたのは(わかりやすく、削除された行には0を挿入してあります)、158、160、162、…と、偶数部分だけになってしまいます(左配列のような)。

また、削除したい335~の部分に関しては、削除されず、元配列のまま出力されていました。

 

何故このような結果になるか、わかりません。

ご回答、宜しくお願いいたします。

 

 

0 件の賞賛
メッセージ8/10
5,422件の閲覧回数
解決策
トピック作成者RYO1221が受理

(横槍かも知れませんが・・・)

 

要素を削除すると(Forループの一番最後)、それによって消した箇所以降は指標がずれます。

なのに、指標を探すための配列は元の配列のままなので

(つまり、消したことが反映される [▼]=シフトレジスタ でなく、元の配列から来たもので一致する指標を探しているので)

見つかった指標は「今の」場所ではなく、「ずれた場所」を消していってしまいます。

335以降が消えないのも、消すたびに配列は小さくなるのに、元の配列で指標を探しているので、

途中から「存在しない配列」を消そうとするせいです。

 

 

Forに入る前に2次元配列を分岐した片方が [▼] に、片方がそのままトンネルになっているので、

トンネルにしないで、Forの中で [▼] から分岐したら如何でしょうか。

消した状態を反映して、指標を探すので、正しい場所を消してくれると思います。

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

M.Shiraishi様

 

わかりやすい回答、ありがとうございます。

 

forループ内で分岐させたところ、無事問題を解決できました。

 

 

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