Simulink S-Function Output Ports

I'm having issues with a Simulink S-Function I've written, and keep getting the error message:
"Error in default port dimensions function of S-function 'LQR_Initial_System/LQR Implementation'. This function does not fully set the dimensions of output port 2"
Unfortunately, the S Function in question only has a single output port. The Simulink model explorer only recognises a single output port, as the pic "Model Ports.jpg" shows.
Could anyone offer any help please?
Thanks

4 Comments

You have to show the S-function source code to debug the problem.
Sorry; I assumed it'd be with the model I uploaded.
I've tweaked the model somewhat since asking this question, however the problem still persists. Here is the source code:
function [Wheel_Force,Body_Force] = fcn(x1, x2, x3, x4, Kt, Ks, Cs,Ms,Mu,Alpha)
A = [0 0 -1 0; 0 0 1 -1; Kt/Mu (-Ks/Mu) (-Cs/Mu) Cs/Mu; 0 Ks/Ms Cs/Ms (-Cs/Ms)];
B = [0; 0; -1; 1];
R = (1/(Ms^2));
Q = [Alpha 0 0 0; 0 ((Ks^2)/(Ms^2)) ((Ks*Cs)/(Ms^2)) (-(Ks*Cs)/(Ms^2));...
0 ((Ks*Cs)/(Ms^2)) ((Cs^2)/(Ms^2)) (-(Cs^2)/(Ms^2)); 0 (-(Ks*Cs)/(Ms^2)) (-(Cs^2)/(Ms^2)) ((Cs^2)/(Ms^2))];
A_Trans = transpose(A);
R_Inverse = inverse(R);
B_Trans = transpose(B);
Coeff_Matrix = (A_Trans + A - (B*R_Inverse*B_Trans));
Coeff_Inverse = inverse(Coeff_Matrix);
P = (Q*-1)*Coeff_Inverse;
K = R_Inverse*B_Trans*P;
Wheel_Force = (-K(3)*x3);
Body_Force = (-K(4)*x4);
Can you help me to solve the same problem?
Error in default port dimensions function of S-function 'fangzhen22/Embedded MATLAB Function'. This function does not fully set the dimensions of output port 2
`]8JTX`TN$%ISGH(8)R4]15.jpg
Look at the .jpg file in the original question, find the similar place for your Embedded MATLAB Function block, change the "size" of "FS" from -1 to something else, likely 1 if your FS is a scalar.

Sign in to comment.

Answers (1)

Fangjun Jiang
Fangjun Jiang on 3 Dec 2018
This is not a Simulink S-function. It is a MATLAB Function block.
Anyway, as you've shown in your attached image, just explicitly specify the "size" for "F1". For example, it seems that the size of "F1" can be set as 1.

Products

Release

R2018a

Asked:

on 2 Dec 2018

Commented:

on 19 Dec 2018

Community Treasure Hunt

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

Start Hunting!