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

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);

 Réponse acceptée

貴弘
貴弘 le 19 Mar 2025

0 votes

正しい方法かわかりませんが,下記のような流れで解決できました.
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);

Plus de réponses (0)

Catégories

En savoir plus sur コード生成 dans Centre d'aide et File Exchange

Produits

Version

R2023a

Community Treasure Hunt

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

Start Hunting!