Получите адрес реального смежного сигнала, входящего во входной порт
const real_T *ssGetInputPortRealSignal(SimStruct *S, int_T inputPortIdx)
SSimStruct, представляющий блок S-Function.
inputPortIdxИндекс порта, сигнал которого требуется.
Указатель (real_T *) на действительный сигнал на входном порте, заданный индексом inputPortIdx.
Используйте, чтобы получить действительный сигнал на конкретном входном порте. Метод должен использовать этот макрос, только если известно, что входной сигнал действителен и mdlInitializeSizes определил, что элементы входного сигнала являются смежными, используя ssSetInputPortRequiredContiguous.
Примечание
The 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™.