Port Dimensions Error in S-Function

조회 수: 1 (최근 30일)
Hugo Pontes
Hugo Pontes 2021년 2월 10일
댓글: Suman 2024년 7월 29일
Hello,
I'm trying to make an S-function that will perform the element wise multiplication of two vectors, in fact, I want to replicate the "Product" block with an S-Function.
I'm trying to start simple so my code doesn't feature matrix multiplication yet, since I think that that part will be quite trivial once I get the port dimensions working.
I'm getting the following error when I try to use a size 4 vector and a size 1 vector:
Error in port widths or dimensions. Output port 1 of 'untitled/Constant1' is a one dimensional vector with 1 elements.
Component:Simulink | Category:Model error
Error in port widths or dimensions. Input port 2 of 'untitled/S-Function7' is a one dimensional vector with 4 elements.
Component:Simulink | Category:Model error
I want the input and output ports to be dynamically sized so that I can input a vector of any size that will be multiplied by a vector of the same size or size 1.
As a result my code is as follows:
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumSFcnParams( S, 0); /*number of input arguments*/
if (!ssSetNumInputPorts(S, 2)) return;
ssSetInputPortWidth(S, 0, DYNAMICALLY_SIZED);
ssSetInputPortWidth(S, 1, DYNAMICALLY_SIZED);
ssSetInputPortDirectFeedThrough(S, 0, 1);
ssSetInputPortDirectFeedThrough(S, 1, 1);
if (!ssSetNumOutputPorts(S,1)) return;
ssSetOutputPortWidth(S, 0, DYNAMICALLY_SIZED);
ssSetNumSampleTimes( S, 1);
}
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
}
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *y = ssGetOutputPortRealSignal(S,0);
*y = 5; /* %This is of course just a placeholder for the algorithm I'll be using'
}
Only the mdlInitializeSizes(SimStruct *S) executes before I get an error but I don't understand why. In the model, when I run it, the second input port of the S-function, is expecting a size 4 vector as input when I'm giving it a size 1 vector. But why is it expecting so? Thanks in advance for any help

답변 (0개)

카테고리

Help CenterFile Exchange에서 Simulink Functions에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by