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://imageshack.us/content_round.php?page=done&id=4tHclZ2klaGtl66S36zY2KfO5co
更新: 実際、レベル 1 の S-Function をレベル 2 に変換しようとしましたが、関数 Output(block) で別のサブ関数を呼び出して他のスレッドを探しようとして行き詰まりましたが、役に立ちませんでした。関連リンクを提供しますか?
私の出力は、入力の多くの処理に依存します。これが、出力値を計算して返すためにサブ関数を呼び出す必要がある理由です。私が見ることができるすべての例は、「関数 Output(ブロック)」、私の場合、それは不可能だと思いました。
次に、Interpreted Matlab Function ブロックを使用しようとしましたが、出力次元が入力次元と同じではないため失敗しました。また、複数の出力の戻りをサポートしていません.............. ..