How to implement improper transfer function (s + 0.1) in simulink?
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
i have used the matlab guide of solving improper fractions in simulink which is as follows.
num=[1 0.1];
den=1;
[r,p,k]=residue(num,den);
sys1 = tf(r(1),[1,-p(1)])
sysk1 = k(1)*s;
sysk2 = k(2);
But it shows this error.
Solving_ImproperFun_simulink
Index exceeds the number of array elements (0).
Error in Solving_ImproperFun_simulink (line 4)
sys1 = tf(r(1),[1,-p(1)])
0 commentaires
Réponses (2)
Walter Roberson
le 4 Avr 2019
Try it at the MATLAB level. You will see that r and p both come out empty, so indexing them at location 1 will not work.
Why not go directly to
sys1 = tf(num, den);
3 commentaires
Walter Roberson
le 4 Avr 2019
You cannot import a transfer function. You would not be able to import a transfer function even if your original code had worked.
You cannot use the Transfer Function block in Simulink for this because that block requires that the denominator be at least as high a degree as the numerator.
You can use a State Space block: https://www.mathworks.com/help/simulink/slref/statespace.html . And you can use MATLAB ahead of time to work out what the matrices should be.
You can also use tf() inside a MATLAB Function Block. It is possible that you might need to coder.external() it, and you might not be able to use it with any Rapid Acceleration turned on.
Elio Sánchez G.
le 30 Juin 2019
You have to sum 2 signals: dr/dt + r (where "r" is the input signal). Just use three blocks: derivative, sum and gain.
1 commentaire
Sina Dehbari
le 7 Mai 2020
Dear Elio,
Could you send a picture of blokcs? I don't know how connect them
Voir également
Catégories
En savoir plus sur Simulink Functions dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!