はじめに
本記事は、up主の備忘録を兼ねています。
内容としては、一般的ではないけど、そこそこ嵌るMATLABの使い方の記録です。
(何か遭遇するたびに書き足していく予定)
MATLAB Function内で、関数を明示的にコード生成なしで呼び出す
MATLAB Functionブロックは、実行時にコード生成されるため、コード生成無しで呼び出したい関数に関しては、下記の外部関数宣言が必要になる。コード生成だと変数の動的な拡張ができないようなので・・・
coder.extrinsic('関数名');
coder.extrinsic('calc_F'); %例
MATLAB Function内の外部宣言した変数の扱い
Simulink中のMATLAB Functionでは、外部宣言した変数の使い方にも注意が必要。mexする際にサイズがわかるように初期化してあげないといけない。
% こういう風に変換しないとmxArrayから逃げられない
b_F = zeros(N*3,1);
b_F_t = zeros(N*3,1);
b_F = F*cgmres.zeta;
b_F_t = F_t;
b = b_F - b_F_t;