2012-04-26 3 views
3

MATLABパスにmyfunc.mというファイルをいくつか持たせておき、シミュレーションの開始直前に自動的にその内容をMATLAB function blockにロードします。このようにして、私は外部エディタを使ってこれらの組み込み関数を記述したり、独立したファイルとして個別にバージョンをコントロールしたりすることができます。SimulinkランタイムでのMATLAB関数ブロックのコードのロード

これをプログラムで実現する方法はありますか?

私の最初の試みは、get_paramのようなものを使用して機能ブロックの内容にアクセスしようとしていましたが、コード自体への読み取り/書き込みアクセス権が得られないようです。

+0

本当に関数ブロックを変更する必要がありますか、それ以外は何もせずに 'myfunc'を呼び出す関数ブロックを使用することは許されますか? – mars

+0

シミュレーション開始前とシミュレーション開始時にどのように呼び出すのが違うのですか? – Rasman

+0

@mars: 'myfunc'を' eml.extrinsic'のように呼び出すか、MATLABワークスペースで関数を呼び出すブロックを使用するだけで、全体的なパフォーマンスが低下するため、直接修正することをお勧めします。 – safwanc

答えて

0

model callbacksは私がこの技術を自分で使っていないのに、あなたが望むことをする方法かもしれないと思っています。対象MATLAB Functionブロックは、すでに次のようにあなたはそれを追加することができます存在しない場合

2

this SO postを参照してください):

sf = sfroot(); 
block = sf.find('Path','myModel/myBlockName','-isa','Stateflow.EMChart'); 
block.Script = 'Your code goes here'; 

load_system('eml_lib'); 
libname = sprintf('eml_lib/MATLAB Function'); 
add_block(libname,'myModel/myBlockName'); 

あなたは、その後のStateflow APIを使用してブロックのコードを変更することができます

this post on MATLAB Answersも参照してください。

1

まず、m-ファイルを含むフォルダをデフォルトのパスに追加する必要があります。これを行うには:

を(コマンドウィンドウで) Goはファイルへ - >パスの設定 - >フォルダあなたがInitFcnコールバックを使用する必要があり、今

(M-ファイルを含むフォルダを選択します)を追加します。あなたの関数を呼び出すためのモデルプロパティ。これを行うには、モデルを開きます。

(モデルウィンドウで) 移動するファイルへ - > [モデルプロパティ] - > [コールバック - > InitFcnのために提供エディットボックスにInitFcn は、あなたの関数すなわちを呼び出すためのコマンドを書きますmyfunc(); 機能と要件に応じてこのコマンドを変更する必要があります。

変更が完了したら、[モデルのプロパティ]ウィンドウに変更を適用し、モデルをシミュレートします。

関連する問題