⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex4.c

📁 c++ 调用matlab的程序 c 调用matlab的程序例子
💻 C
字号:
/* * ex4.c * * Copyright (c) 1995-1999 by The Mathworks, Inc. All Rights Reserved. */ /* $Revision: 1.10 $ */ #include <stdlib.h>     /* used for EXIT_SUCCESS */#include "matlab.h"double SIGMA, RHO, BETA;mxArray *lorenz(mxArray *tm, mxArray *ym){    mxArray *ypm = NULL;    double *y, *yp;    mlfEnterNewContext(0,2,tm,ym);    mlfAssign(&ypm, mlfDoubleMatrix(3,1,NULL,NULL));    y = mxGetPr(ym);    yp = mxGetPr(ypm);        yp[0] = -BETA*y[0] + y[1]*y[2];    yp[1] = -SIGMA*y[1] + SIGMA*y[2];    yp[2] = -y[0]*y[1] + RHO*y[1] - y[2];        mlfRestorePreviousContext(0,2,tm,ym);    return mlfReturnValue(ypm);}staticint _lorenz_thunk_fcn_( mlfFuncp pFunc, int nlhs, mxArray **lhs, int nrhs, mxArray **rhs ){    typedef mxArray * (*PFCN_1_2)( mxArray * , mxArray * );    mxArray *Out;    if ( nlhs > 1 || nrhs > 2 ) {        return(0);    }        Out = (*((PFCN_1_2)pFunc))(                               nrhs > 0 ? rhs[0] : 0,                               nrhs > 1 ? rhs[1] : 0                               );        if (nlhs > 0) {        lhs[0] = Out;    }        return(1);}static mlfFuncTabEnt MFuncTab[] = {	{ "lorenz", (mlfFuncp) lorenz, _lorenz_thunk_fcn_ },	{ 0, 0, 0 }};int main( ){    mxArray *tm = NULL, *ym = NULL, *tsm = NULL, *ysm = NULL;    double tspan[] = { 0.0, 10.0 };    double y0[] = { 10.0, 10.0, 10.0 };    double *t, *y1, *y2, *y3;    int k, n;    mlfEnterNewContext(0, 0);    mlfFevalTableSetup ( MFuncTab );    SIGMA = 10.0;    RHO = 28.0;    BETA = 8.0/3.0;    mlfAssign(&tsm, mlfDoubleMatrix(2, 1, tspan, NULL));    mlfAssign(&ysm, mlfDoubleMatrix(1, 3, y0, NULL));    mlfOde23(mlfVarargout(&tm, &ym, NULL),             mxCreateString("lorenz"), tsm, ysm, NULL, NULL);    n = mxGetM(tm);    t = mxGetPr(tm);    y1 = mxGetPr(ym);    y2 = y1 + n;    y3 = y2 + n;    mlfPrintf("      t         y1        y2        y3\n");    for (k = 0; k < n; k++) {        mlfPrintf("%9.3f %9.3f %9.3f %9.3f\n",                  t[k], y1[k], y2[k], y3[k]);    }    /* Free the matrices. */    mxDestroyArray(tsm);    mxDestroyArray(ysm);    mxDestroyArray(tm);    mxDestroyArray(ym);    mlfRestorePreviousContext(0,0);    return(EXIT_SUCCESS);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -