Получите адрес действительного, непрерывного сигнала, вводящего входной порт
const real_T *ssGetInputPortRealSignal(SimStruct *S, int_T inputPortIdx)
S
SimStruct, представляющий Блок s-function.
inputPortIdx
Индекс порта, сигнал которого требуется.
Указатель (real_T *
) к действительному сигналу на входном порте, заданном индексом inputPortIdx
.
Используйте, чтобы получить действительный сигнал на конкретном входном порте. Метод должен использовать этот макрос, только если входной сигнал, как известно, действителен, и mdlInitializeSizes
указал, что элементы входного сигнала непрерывны, с помощью ssSetInputPortRequiredContiguous
.
Макрос ssGetInputPortRealSignal
становится функцией, когда вы компилируете свою S-функцию в режиме отладки (mex -g
).
C, C++
Следующий код демонстрирует использование ssGetInputPortRealSignal
.
Установите флаги требовать что входные порты быть непрерывными:
void mdlInitializeSizes(SimStruct* S) { int_T i; /* snip */ if (!ssSetNumInputPorts(S,2)) return; for (i = 0; i < 2; i++) { /* snip */ ssSetInputPortDirectFeedThrough(S,i,1); ssSetInputPortRequiredContiguous(S,i,1); } /* snip */ }
Можно теперь использовать ssGetInputPortRealSignal
в mdlOutputs
:
void mdlOutputs(SimStruct* S, int_T tid) { int_T i; /* snip */ for (i = 0; i < 2; i++) { int_T nu = ssGetInputPortWidth(S,i); const real_T* u = ssGetInputPortRealSignal(S,i); UseInputVectorInSomeFunction(u, nu); } /* snip */ }
Смотрите S-функцию sfun_frmdft.c
, используемый в sfcndemo_frame
для полного примера с помощью этой функции. Выполнение этой модели требует лицензии DSP System Toolbox™.
ssSetInputPortRequiredContiguous
, ssGetInputPortSignal
, mdlInitializeSizes