home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l460 / 2.ddi / SRC.DI$ / YPRIMEG.F < prev   
Encoding:
Text File  |  1993-03-26  |  1.8 KB  |  66 lines

  1. C YPRIMEG.FOR - Gateway function for YPRIME.FOR
  2. C
  3. C This is an example of the FORTRAN code required for interfacing
  4. C a .MEX file to MATLAB.
  5. C
  6. C This subroutine is the main gateway to MATLAB.  When a MEX function
  7. C  is executed MATLAB calls the USRFCN subroutine in the corresponding
  8. C  MEX file.  
  9. C
  10.       SUBROUTINE MEXFUNCTION(NLHS, PLHS, NRHS, PRHS)
  11.       INTEGER PLHS(*), PRHS(*)
  12.       INTEGER NLHS, NRHS
  13. C
  14.       INTEGER MXCREATEFULL, MXGETPR, MXGETM, MXGETN
  15. C
  16. C KEEP THE ABOVE SUBROUTINE, ARGUMENT, AND FUNCTION DECLARATIONS FOR USE
  17. C IN ALL YOUR FORTRAN MEX FILES.
  18. C---------------------------------------------------------------------
  19. C
  20.       INTEGER YPP, TP, YP
  21.       INTEGER M, N
  22.       REAL*8 RYPP(4), RTP, RYP(4)
  23. C
  24. C CHECK FOR PROPER NUMBER OF ARGUMENTS
  25. C
  26.       IF (NRHS .NE. 2) THEN
  27.         CALL MEXERRMSGTXT('YPRIME requires two input arguments')
  28.       ELSEIF (NLHS .NE. 1) THEN
  29.         CALL MEXERRMSGTXT('YPRIME requires one output argument')
  30.       ENDIF
  31. C
  32. C CHECK THE DIMENSIONS OF Y.  IT CAN BE 4 X 1 OR 1 X 4.
  33. C
  34.       M = MXGETM(PRHS(2))
  35.       N = MXGETN(PRHS(2))
  36. C
  37.       IF ((MAX(M,N) .NE. 4) .OR. (MIN(M,N) .NE. 1)) THEN
  38.         CALL MEXERRMSGTXT('YPRIME requires that Y be a 4 x 1 vector')
  39.       ENDIF
  40. C
  41. C CREATE A MATRIX FOR RETURN ARGUMENT
  42. C
  43.       PLHS(1) = MXCREATEFULL(M,N,0)
  44. C
  45. C ASSIGN POINTERS TO THE VARIOUS PARAMETERS
  46. C
  47.       YPP = MXGETPR(PLHS(1))
  48. C
  49.       TP = MXGETPR(PRHS(1))
  50.       YP = MXGETPR(PRHS(2))
  51. C
  52. C COPY RIGHT HAND ARGUMENTS TO LOCAL ARRAYS OR VARIABLES
  53.       CALL MXCOPYPTRTOREAL8(TP, RTP, 1)
  54.       CALL MXCOPYPTRTOREAL8(YP, RYP, 4)
  55. C
  56. C DO THE ACTUAL COMPUTATIONS IN A SUBROUTINE
  57. C       CREATED ARRAYS.  
  58. C
  59.       CALL YPRIME(RYPP,RTP,RYP)
  60. C
  61. C COPY OUTPUT WHICH IS STORED IN LOCAL ARRAY TO MATRIX OUTPUT
  62.       CALL MXCOPYREAL8TOPTR(RYPP, YPP, 4)
  63. C
  64.       RETURN
  65.       END
  66.