2016-04-11 49 views
1

find(u1, 1)と同じように、Simulinkの2次元配列の最初の非ゼロ要素のインデックスを探したいMATLABのコマンドSimulinkの2次元配列の最初の非ゼロ要素のインデックスを見つける

たとえば、MATLABで私はどうなる:

u1 = [46.15 61.21; 22.5 45.3; -1 -1; -1 -1; -1 -1]; 

idx= find(u1<0, 1) % The answer would be: idx = 3 
+1

'find'ブロックを試しましたか? – Daniel

+0

私はあなたの質問をよく理解しているのか分かりません。 2次元ベクトル(行列)を持ち、最初の要素の要素インデックスijが0でないか、0より小さいか調べるには? どのようにして2Dベクトルを読み込みますか? [1 2 3]のような行列がある場合は です。 -1 -3 4] 最初の '0より小さい'要素は、-1に等しい要素(2,1)になります。最初の非ゼロ要素は1に等しい(1,1)となります。 あなた自身をよりよく説明できますか? Fab。 – kalmanIsAGameChanger

答えて

0

あなたが入力があなたの論理ベクトルでなければなりませんので、

blocks

ようFindMinMaxブロックを使用することができます。以前の計算を使用してこれを得ることができます。

例の場合は、ブロックを使用して<の条件をテストし、上記の入力の代わりに出力を使用することをお勧めします。

ブロックFindブロックは、非ゼロ要素のすべてのインデックスを返します。 MinMaxブロック(最小値を取るように設定)を使用して、最小のインデックスを取得できます。


あなたがFindを使用する前に、任意の値が真であるかどうかをテストするために、ORに設定Logical Operatorブロックを、使用することをお勧めします。値がtrueでない場合、Findは空の配列を返し、MinMaxブロックの入力時にエラーになります。これは、制御フローについてdocumentationに示すように、If/Else Ifロジックを使用して回避することができます。

関連する問題