問題タブ [s-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
549 参照

matlab - ブロックスコープでSimulinkに任意の型を保存する方法は?

どうやら Simulink は少数のデータ型しかサポートしていないようです。

では、他のものを維持するにはどうすればよいでしょうか。ディレクトリから画像を生成したいのですが、ディレクトリ リストと現在の位置を保持するにはどうすればよいですか?

次のコードはエラーを引き起こします

0 投票する
0 に答える
711 参照

s-function - s-function: 連続状態空間

連続状態空間モデルのために、s-function で m ファイルを呼び出しています。24行目のスイッチでフラグを使用するとエラーが発生します。

エラーは次のとおりです。

"??? 入力引数 "フラグ" が定義されていません。 ==> 緯度 24 スイッチ フラグのエラー"

メインの m ファイルのサブ関数は次のとおりです。

01:

02:

03:

サブ関数はエラーを出していません。

0 投票する
2 に答える
4937 参照

matlab - simulink でカスタム s-function を作成する方法は?

simulink でカスタム s-function を作成するために使用できるブロックは何ですか?

S-Function を使用して C コードを使用したい.定義しなければならない関数があることはわかっているが、その関数に到達する方法や正確にどのコードから始めればよいかがわからない..

注:私はmatlabとsimulinkがまったく初めてです..

0 投票する
1 に答える
1390 参照

matlab - Simulink で動的にサイズ変更されたバス オブジェクト

渡される1つのパラメーターに応じて可変数の状態を持つCS関数を作成しました(計算流体力学を使用しており、パラメーターはセルの数です)。温度プロファイルを含むバス オブジェクトを S 関数から出力したいと考えています。問題は、Simulink (バス エディター) でバス オブジェクトを作成するときの出力の長さがわからないことです。CS 関数からバス オブジェクトのサイズを動的に設定する方法はありますか?

0 投票する
1 に答える
1450 参照

code-generation - SIMULINK での S-Function (C コード) のマルチインスタンスの使用

SIMULINK モデルに、関数内でいくつかの静的変数を使用するレガシー C 関数があります。静的変数はグローバルに使用できます。モデルの複数のインスタンスを参照すると、S-Function がそのように構成されていないため、エラーが発生します。コード生成でこれが許可されていないため、このエラー メッセージが表示されます。

私が得るエラーメッセージは次のとおりです。

S-Function ブロック 'ECDCTRL/PULDESC/S-Function Builder' は、複数の実行インスタンスをサポートすることを宣言していないため、マルチインスタンス ノーマル モードではサポートされていません。S-Function が複数の実行インスタンスの要件を満たす場合、'mdlSetWorkWidths' メソッドで SimStruct 関数 'ssSupportsMultipleExecInstances' を使用してこれを宣言できます。

(MYSFUNC)_Outputs_Wrapper.c自動生成されたコードでビルドするときにファイルを使用しています。モデルの複数の参照を使用する場合に、レガシー C 関数を確実に使用できるようにするにはどうすればよいですか? SIMULINK の Web サイトではメソッドの使用が提案されていますが、ヘッダー ファイルssSupportsMultipleExecInstances(SimStruct *S, bool flag)を使用していないため正しくありません。SimStruct回避策は何ですか?

0 投票する
2 に答える
2389 参照

matlab - シリアル ポートからデータを読み取る S-Function を作成するのに役立ちます。

ここで問題が発生した後、MATLAB Function ブロックを使用して関数を作成するための助けが必要です。次のリンクで、一部の人がそのブロックまたは s-function で解決したことを確認しました: http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/317910

http://www.physicsforums.com/showthread.php?t=595813

http://www.mathworks.de/matlabcentral/newsreader/view_thread/250266

だから私はこれで試しました:

only3私が作成した関数はどこにありますか。文字列から最初の 3 文字を取得し、'status'答えの 3 文字だけを比較する必要があります。

通信がすでに開かれているかどうかを知るために行いました。しかし、simulink はウィンドウとしてエラーを返します:

最初の反復でポートが開いた後、ポートを開こうとしていると思います。

編集:私はこれで私のコードを変更します:

%%Phil の提案から抜粋:

エラーとして返されます:

ハイライトy表現。

更新編集: 次のコードで解決しました:

ただし、以下でコメントしたように、シミュレーションを停止するたびに、通信が閉じられないため、Matlab を再起動する必要があります。これは、シミュレーションを再試行すると、「最初のエラー」が返されるためです。

何故かはわからない。M コード レベル 1 S-Function の関数のfclose(s)ように停止するすべてのシミュレーションを実行するものがあるでしょう。mdlTerminateいくつかの提案?