Получите адрес действительного, непрерывного сигнала, вводящего входной порт
const real_T *ssGetInputPortRealSignal(SimStruct *S, int_T inputPortIdx)
SSimStruct, представляющий Блок 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