0

S-Function のドキュメントを読みました"S-function level-1 supports vector inputs and outputs. DOES NOT support multiple input and output ports"

2 番目の文は、入力と出力の次元が同じでなければならないという意味ですか?

私は S-function level-1 を使用して以下を実行しています。

[a1, b1] = choose_cells(c, d);

ここで、a1 と b1 は出力、c と d は入力です。d が 6 つの値を持つ配列であることを除いて、すべての変数は単一の値を持ちます。

添付の画像を参照すると、S-Function ブロックでは、入力の次元は出力の次元と同じでなければならないことがわかっています。そうしないと、エラーが発生します。この場合、入力の次元は 7 で、出力の次元は 2 です。完全に機能させるには、ダイアグラムに「ターミネーター」ブロックを含める必要があります。そうしないと、エラーが発生します。

私の問題は、システムが大きくなると、この方法を使用して配列 d に数百の変数が含まれる可能性があることです。これは、この作業を行うために数百の「ターミネーター」ブロックを追加する必要があることを意味します。これは間違いなく実用的ではありません。

これを実装する賢明な方法を教えてください。

http://imgur.com/ib6BTTp

http://imageshack.us/content_round.php?page=done&id=4tHclZ2klaGtl66S36zY2KfO5co

更新: 実際、レベル 1 の S-Function をレベル 2 に変換しようとしましたが、関数 Output(block) で別のサブ関数を呼び出して他のスレッドを探しようとして行き詰まりましたが、役に立ちませんでした。関連リンクを提供しますか?

私の出力は、入力の多くの処理に依存します。これが、出力値を計算して返すためにサブ関数を呼び出す必要がある理由です。私が見ることができるすべての例は、「関数 Output(ブロック)」、私の場合、それは不可能だと思いました。

次に、Interpreted Matlab Function ブロックを使用しようとしましたが、出力次元が入力次元と同じではないため失敗しました。また、複数の出力の戻りをサポートしていません.............. ..

4

1 に答える 1

0

レベル 1 s-Function は、単一の入力ポートと単一の出力ポートをサポートします。これらのポートはベクトルでなければなりません。ただし、長さに制限はありません。入力と出力は異なる長さを持つことができます。セレクター ブロックを使用して、関連するデータのみを選択できます。出力で Bus を使用する必要はありません。

Output から他のサブ関数を呼び出すことにも制限はありません。サブ関数が同じファイルにない場合は、パスまたは現在のディレクトリにある必要があります。

MATLAB コードが MATLAB Function ブロックと互換性がある場合は、そのブロックを使用することをお勧めします。セットアップと使用がより簡単です。

于 2013-07-17T13:55:58.833 に答える