MATLAB Answers

Help understanding example for Inlining Matlab S-function

1 view (last 30 days)
Nshine
Nshine on 6 Nov 2019
Commented: Nshine on 6 Nov 2019
In https://au.mathworks.com/help/rtw/tlc/introduction-inline-s-functions.html#f34125, I am trying to follow the example under the heading "Inline MATLAB File S-Functions"
Step 5 is unclear:
"Step 5 :On the Signal Attributes tab of the Inport Block Parameters dialog box, set the Port dimensions parameter to 5."
What do I need to click on to find this? Where do I find the "Inport Block Parameters dialog box"?
Thanks,

  0 Comments

Sign in to comment.

Accepted Answer

galaxy
galaxy on 6 Nov 2019
You double click to Inport block, choose the Signal Attributes tab
6.PNG

  3 Comments

Nshine
Nshine on 6 Nov 2019
The example instructs you to build this model, in which there in no Inport block. Are these instructions incorrect?
model.png
galaxy
galaxy on 6 Nov 2019
I think step 5 for example about code generation from S-Function block.
So when you change contant block to inport block, generated code will same below.
/* S-Function (timestwo): '<Root>/MATLAB S-Function' */
/* Multiply input by two */
{
int_T i1;
const real_T *u0 = &times2_B.Gain[0];
real_T *y0 = &times2_Y.Out1[0];
for (i1=0; i1 < 5; i1++) {
y0[i1] = u0[i1] * 2.0;
}
}
5 dimenssion of inport is maximum of for loop
Nshine
Nshine on 6 Nov 2019
Thanks galaxy. That makes sense.
I'll note as well that there is no instruction in this example to compile the code by cliking on the Build icon (shortcut: Ctrl+B).
Once I build it, I can see a folder created named"
<simulink model name>_grt__rtw
In this folder is the file:
<simulink model name>.c
which has the lines in the previous comment within the "Model step function"
/* Model step function */
void times2_B_step(void)
{
/* S-Function (timestwo): '<Root>/S-Function' incorporates:
* Constant: '<Root>/Constant'
* Outport: '<Root>/Out1'
*/
/* Multiply input by two */
{
int_T i1;
const real_T *u0 = &times2_B_P.Constant_Value[0];
real_T *y0 = &times2_B_Y.Out1[0];
for (i1=0; i1 < 10; i1++) {
y0[i1] = u0[i1] * 2.0;
}
}
etc...
However, during there is an error during compilation:
Error(s) encountered while building "times2_B": ### Failed to generate all binary outputs.
If anyone else encounters this error, I found the same problem discussed here: https://au.mathworks.com/matlabcentral/answers/156208-how-do-i-fix-failed-to-generate-all-binary-outputs-error.
Having a path where the simulink model, .m and .tld files are stored without white spaces fixed the problem.

Sign in to comment.

More Answers (0)

Sign in to answer this question.

Products


Release

R2018b