예제 #1
0
  /* Function: mdlCheckParameters =============================================
   * Abstract:
   *    Validate our parameters to verify they are okay.
   */
  static void mdlCheckParameters(SimStruct *S)
  {
      /* Check 1st parameter: A-Matrix */
      {
          if ( mxGetN(A_PARAM(S)) != NSTATES || !IS_PARAM_DOUBLE(A_PARAM(S)) ) {
              ssSetErrorStatus(S,"1st parameter to S-function "
                               "\"A-Matrix\" must be square and double");
              return;
          }
      }
 
      /* Check 2nd parameter: B-Matrix */
      {
          if (mxGetM(B_PARAM(S)) != NSTATES || !IS_PARAM_DOUBLE(B_PARAM(S)) ) {
              ssSetErrorStatus(S,"2nd parameter to S-function "
                               "\"B-Matrix\" is not dimensioned "
                               "correctly");
              return;
          }
      }
 
      /* Check 3rd parameter: C-Matrix */
      {
          if (mxGetN(C_PARAM(S)) != NSTATES || !IS_PARAM_DOUBLE(C_PARAM(S)) ) {
              ssSetErrorStatus(S,"3rd parameter to S-function "
                               "\"C-Matrix\" is not dimensioned "
                               "correctly");
              return;
          }
      }

      /* Check 4th parameter: D-Matrix */
      {
          if (mxGetM(D_PARAM(S)) != NOUTPUTS || 
              mxGetN(D_PARAM(S)) != NINPUTS || !IS_PARAM_DOUBLE(D_PARAM(S)) ) {
              ssSetErrorStatus(S,"4th parameter to S-function "
                               "\"D-Matrix\" is not dimensioned "
                               "correctly");
              return;
          }
      }

      /* Check 5th parameter: X0 */
      {
          if ( ((mxGetM(X0_PARAM(S)) != 0) && 
               (mxGetM(X0_PARAM(S)) != NSTATES)) || !OK_EMPTY_DOUBLE_PARAM(X0_PARAM(S)) ) {
              ssSetErrorStatus(S,"5th parameter to S-function "
                               "\"X0-Matrix\" is not dimensioned "
                               "correctly");
              return;
          }
      }
  }
예제 #2
0
파일: muscle.cpp 프로젝트: minosniu/nerf-c
  /* Function: mdlCheckParameters =============================================
   * Abstract:
   *    Validate our parameters to verify they are okay.
   */
  static void mdlCheckParameters(SimStruct *S)
  {
      /* Check 1st parameter: MAGICNUM-Matrix */
      {
          if ( mxGetNumberOfElements(MAGICNUM_PARAM(S)) != NMAGICNUM || 
                  !IS_PARAM_DOUBLE(MAGICNUM_PARAM(S)) )
          {
              ssSetErrorStatus(S,"1st parameter to S-function "
                               "\"A-Matrix\" must be square and double");
              return;
          }
      }

      /* Check 2nd parameter: X0 */
      {
          if ( ((mxGetNumberOfElements(X0_PARAM(S)) != 0) && 
               (mxGetNumberOfElements(X0_PARAM(S)) != NSTATES)) || !OK_EMPTY_DOUBLE_PARAM(X0_PARAM(S)) ) {
              ssSetErrorStatus(S,"2nd parameter to S-function "
                               "\"X0-Matrix\" is not dimensioned "
                               "correctly");
              return;
          }
      }
  }