Simulink上で​のM-functio​nの使用について

13 views (last 30 days)
貴弘
貴弘 on 18 Mar 2025
Answered: 貴弘 on 19 Mar 2025
simulink上でM-functionを使ってプログラムを作成しています.
初歩的な質問で恐縮ですが,以下のようなプログラム例なのですが,コード生成に対応していない関数を使用する際,
「coder.extrinsic('tf','c2d');」でエラーを回避するところまではできたのですが,
17~18行で「'mxArray' から 'Numerator' のフィールドを抽出しようとしています。」とエラーが出ます.
どのように修正すれば良いかご教示いただきたく,よろしくお願いいたします.
function y_k = fcn(u_k, K, T, L)
persistent y
if isempty(y)
y = zeros(1,2);
end
coder.extrinsic('tf','c2d');
Ts = 0.1;
SYS = tf(K,[T 1],"inputdelay",L);
SYSz = c2d(SYS,Ts);
B = SYSz.Numerator;
A = SYSz.Denominator;
y(1) = B(2)*u_k-A(2)*y(2);
y_k = y(1);
y = circshift(y,1,2);

Accepted Answer

貴弘
貴弘 on 19 Mar 2025
正しい方法かわかりませんが,下記のような流れで解決できました.
coder.extrinsic('tf','c2d','getfield','cell2mat');
Num = getfield(SYSz,'Numerator');
Den = getfield(SYSz,'Denominator');
B = zeros(1,2);
A = zeros(1,2);
B = cell2mat(SYSz.Numerator);
A = cell2mat(SYSz.Denominator);

More Answers (0)

Products


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!