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
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
あなたが入力があなたの論理ベクトルでなければなりませんので、
ようFind
とMinMax
ブロックを使用することができます。以前の計算を使用してこれを得ることができます。
例の場合は、ブロックを使用して<
の条件をテストし、上記の入力の代わりに出力を使用することをお勧めします。
ブロックFind
ブロックは、非ゼロ要素のすべてのインデックスを返します。 MinMax
ブロック(最小値を取るように設定)を使用して、最小のインデックスを取得できます。
あなたがFind
を使用する前に、任意の値が真であるかどうかをテストするために、ORに設定Logical Operator
ブロックを、使用することをお勧めします。値がtrueでない場合、Find
は空の配列を返し、MinMax
ブロックの入力時にエラーになります。これは、制御フローについてdocumentationに示すように、If
/Else If
ロジックを使用して回避することができます。
'find'ブロックを試しましたか? – Daniel
私はあなたの質問をよく理解しているのか分かりません。 2次元ベクトル(行列)を持ち、最初の要素の要素インデックスijが0でないか、0より小さいか調べるには? どのようにして2Dベクトルを読み込みますか? [1 2 3]のような行列がある場合は です。 -1 -3 4] 最初の '0より小さい'要素は、-1に等しい要素(2,1)になります。最初の非ゼロ要素は1に等しい(1,1)となります。 あなた自身をよりよく説明できますか? Fab。 – kalmanIsAGameChanger