全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1639 2
2020-06-08

经管之家:Do the best economic and management education!
RenMin University of China .
Daniel tulips liu.


  • Copyright @ SeHyoun Ahn

main C file for matlab mex compile

dertransp.c

/* Inputs: prhs[0] = dA/dx corresponding to a matrix A of size (nrow x ncol)
 *         prhs[1] = nrow of matrix A
 * Outputs: plhs[0] = dA'/dx corresponding to transposed matrix A'
 * Method: This is just a row permutation of dA/dx
 *
 * by SeHyoun Ahn, Aug 2016
 */

#include "mex.h"
#include <stdlib.h>
#include <time.h>

void insertsort(mwIndex *irs, double *prs, mwSize n) {
    mwIndex i,j;
    mwIndex swapind;
    double swapval;
    for (i=1; i<n; ++i) {
        swapind = irs[i];
        swapval = prs[i];
        for (j=i; j>=0;--j) {
            if (j==0) {
                irs[j] = swapind;
                prs[j] = swapval;
                break;
            }
            else if (swapind<irs[j-1]) {
                irs[j] = irs[j-1];
                prs[j] = prs[j-1];
            }
            else {
                irs[j] = swapind;
                prs[j] = swapval;
                break;
            }
        }
    }
};

/* It uses in-place quicksort to get from unsorted CSC to sorted CSC format*/
void quicksort(mwIndex* irs, double* prs, mwSize n) {
    mwIndex front, back, pivot;
    mwIndex swapind;
    double swapval;
    pivot = rand()%n;
    front = rand()%n;
    back = rand()%n;
    if (irs[front]>irs[back]) {
        if (irs[pivot]>irs[front]) {
            pivot = irs[front];
            swapval = prs[front];
            irs[front] = irs[0];
            prs[front] = prs[0];
            irs[0] = pivot;
            prs[0] = swapval;
        }
        else if (irs[pivot]>irs[back]) {
            front = irs[pivot];
            swapval = prs[pivot];
            irs[pivot] = irs[0];
            prs[pivot] = prs[0];
            irs[0] = front;
            prs[0] = swapval;
            pivot = front;
        }
        else {
            pivot = irs[back];
            swapval = prs[back];
            irs[back] = irs[0];
            prs[back] = prs[0];
            irs[0] = pivot;
            prs[0] = swapval;
        }
    }
    else {
        if (irs[pivot]>irs[back]) {
            pivot = irs[back];
            swapval = prs[back];
            irs[back] = irs[0];
            prs[back] = prs[0];
            irs[0] = pivot;
            prs[0] = swapval;
        }
        else if (irs[pivot]>irs[front]) {
            back = irs[pivot];
            swapval = prs[pivot];
            irs[pivot] = irs[0];
            prs[pivot] = prs[0];
            irs[0] = back;
            prs[0] = swapval;
            pivot = back;
        }
        else {
            pivot = irs[front];
            swapval = prs[front];
            irs[front] = irs[0];
            prs[front] = prs[0];
            irs[0] = pivot;
            prs[0] = swapval;
        }
    }
    front = 1;
    back = n-1;

    while (front < back) {
        if (irs[front] < pivot) {
            ++front;
        }
        else if (irs[back] > pivot) {
            --back;
        }
        else {
            swapind = irs[back];
            swapval = prs[back];
            irs[back] = irs[front];
            prs[back] = prs[front];
            irs[front]= swapind;
            prs[front]= swapval;
            ++front;
        }
    }
    if (irs[front]<pivot) {
        swapind = irs[front];
        swapval = prs[front];
        irs[front] = irs[0];
        prs[front] = prs[0];
        irs[0] = swapind;
        prs[0] = swapval;
        if (front > 17)
            quicksort(&irs[0],&prs[0],front);
        else if (front > 1)
            insertsort(&irs[0],&prs[0],front);
        if ((n-1-front) > 17)
            quicksort(&irs[front+1],&prs[front+1],n-1-front);
        else if ((n-1-front) > 1)
            insertsort(&irs[front+1],&prs[front+1],n-1-front);
    }
    else {
        swapind = irs[front-1];
        swapval = prs[front-1];
        irs[front-1] = irs[0];
        prs[front-1] = prs[0];
        irs[0] = swapind;
        prs[0] = swapval;
        if (front-1 > 17) {
            quicksort(&irs[0],&prs[0],front-1);
        }
        else if (front-1 > 1) {
            insertsort(&irs[0],&prs[0],front-1);
        }
        if (n-front > 17) {
            quicksort(&irs[front],&prs[front],n-front);
        }
        else if (n-front > 1) {
            insertsort(&irs[front],&prs[front],n-front);
        }
    }
};

void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
    mwSize nrow, ncol, nderiv,nnz;
    mwIndex *irsA, *jcsA;
    double *prA;
    mwIndex *lirs, *ljcs;
    double *lpr;
    mwIndex i,j,tmp;

    srand(time(NULL));


    /* Read In Sparse Matrix */
    nderiv = mxGetN(prhs[0]);
    ncol = mxGetM(prhs[0]);
    irsA = mxGetIr(prhs[0]);
    jcsA = mxGetJc(prhs[0]);
    prA = mxGetPr(prhs[0]);
    nnz = jcsA[nderiv];

    /* Read in the number of rows in the Matrix A */
    nrow = mxGetScalar(prhs[1]);
    ncol = ncol/nrow;

    /* Prepare Output Matrix */
    plhs[0] = mxCreateSparse(nrow*ncol, nderiv, nnz, mxREAL);
    lirs = mxGetIr(plhs[0]);
    ljcs = mxGetJc(plhs[0]);
    lpr = mxGetPr(plhs[0]);

    ljcs[0] = 0;
    for (i=0; i<nderiv; ++i) {
        /* Compute the new row Index */
        for (j = jcsA[i]; j<jcsA[i+1]; ++j){
            lirs[j] = (irsA[j]%nrow)*ncol + irsA[j]/nrow;
            lpr[j] = prA[j];
        }
        ljcs[i+1] = jcsA[i+1];

        /* Sort to ensure sorted CSC format */
        if ( (ljcs[i+1] - ljcs[i]) > 17) {
            quicksort(&lirs[ljcs[i]], &lpr[ljcs[i]], ljcs[i+1]-ljcs[i]);
        }
        else if ( (ljcs[i+1] - ljcs[i]) > 1) {
            insertsort(&lirs[ljcs[i]], &lpr[ljcs[i]], ljcs[i+1]-ljcs[i]);
        }
    }
}

matvalXmatder

/* Inputs: prhs[0] = [m x n]  matrix A
 *         prhs[1] = [(m*l) x nderiv] matrix of dB'/dx
 * Outputs: plhs[0] = [(n*l) x nderiv] matrix corresponding to (A*dB/dx)
 *
 * Note: To get dB/dx to dB'/dx, you can call dertransp(dB/dx,m) prior to
 *                             calling matvalXmatder
 *
 * Method: This multiplication does on the fly insert-sort. However,
 *
 * by SeHyoun Ahn, Aug 2016
 */

#include "mex.h"

void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
    mwIndex n, m, l, nderiv,nnz, counter;

    /* Read In A */
    mwIndex *irsA, *jcsA;
    double *prA;
    m = mxGetN(prhs[0]);
    n = mxGetM(prhs[0]);
    irsA = mxGetIr(prhs[0]);
    jcsA = mxGetJc(prhs[0]);
    prA = mxGetPr(prhs[0]);

    /* Read in dB'/dx */
    mwIndex *irsB, *jcsB;
    double *prB;
    nderiv = mxGetN(prhs[1]);
    l = mxGetM(prhs[1]);
    irsB = mxGetIr(prhs[1]);
    jcsB = mxGetJc(prhs[1]);
    prB = mxGetPr(prhs[1]);
    l = l/m;

    /* Prepare Output Matrix */
    mwIndex *lirs, *ljcs;
    double *lpr;
    nnz = jcsB[nderiv] + 1;

    plhs[0] = mxCreateSparse(n*l, nderiv, nnz, mxREAL);

    lirs = mxGetIr(plhs[0]);
    ljcs = mxGetJc(plhs[0]);
    lpr = mxGetPr(plhs[0]);

    mwIndex i,j, cloc, cir, k,o,p;
    mwSignedIndex pos;
    ljcs[0] = 0;
    counter = 0;

    /* Multiplication Loop */
    for (i=0; i<nderiv; ++i) {
        cloc = counter;
        for (j=jcsB[i]; j<jcsB[i+1]; ++j) {
            pos = irsB[j]/l;
            for (k=jcsA[pos]; k<jcsA[pos+1]; ++k) {
                cir = (irsB[j]%l)*n + irsA[k];
                if (counter == cloc) {
                    if (counter > nnz-1) {
                        nnz = ((nnz+1)*(nderiv+1)/(i+1));
                        lirs = mxRealloc(lirs, nnz*sizeof(*lirs));
                        lpr = mxRealloc(lpr, nnz*sizeof(*lpr));
                    }
                    lirs[counter] = cir;
                    lpr[counter] = prB[j]*prA[k];
                    ++counter;
                }
                else {
                    for (o = counter; o>cloc; --o) {
                        if (lirs[o-1] == cir) {
                            lpr[o-1] += prB[j]*prA[k];
                            break;
                        }
                        else if (lirs[o-1] < cir) {
                            if (counter > nnz-1) {
                                nnz = ((nnz+1)*(nderiv+1)/(i+1));
                                lirs = mxRealloc( lirs, nnz*sizeof(*lirs));
                                lpr = mxRealloc( lpr, nnz*sizeof(*lpr));
                            }
                            for (p=counter; p>o; --p) {
                                lirs[p] = lirs[p-1];
                                lpr[p] = lpr[p-1];
                            }
                            lirs[o] = cir;
                            lpr[o] = prB[j]*prA[k];
                            ++counter;
                            break;
                        }
                        else if (o == cloc+1) {
                            if (counter > nnz-1) {
                                nnz = ((nnz+1)*(nderiv+1)/(i+1));
                                lirs = mxRealloc( lirs, nnz*sizeof(*lirs));
                                lpr = mxRealloc( lpr, nnz*sizeof(*lpr));
                            }
                            for (p=counter; p>cloc; --p) {
                                lirs[p] = lirs[p-1];
                                lpr[p] = lpr[p-1];
                            }
                            lirs[cloc] = cir;
                            lpr[cloc] = prB[j]*prA[k];
                            ++counter;
                        }
                    }
                }
            }
        }
        ljcs[i+1]=counter;
    }


    /* Prepare Output */
    if (counter > 0) {
        lirs = mxRealloc(lirs, counter*sizeof(*lirs));
        lpr = mxRealloc(lpr, counter*sizeof(*lpr));

        mxSetIr(plhs[0], lirs);
        mxSetPr(plhs[0], lpr);
        mxSetNzmax(plhs[0], counter+1);
    }
}

DSGE matlab main file

%% Simple Example %
f1(x,y,z)=x2+cos(y)(x+z)+ezf_1(x,y,z) = x^2+cos(y)*(x+z)+e^z
f2(x,y,z)=yzf_2(x,y,z) = yz at (x,y,z)=(1,2,3)(x,y,z) = (1,2,3)

%% Examples of Using Automatic Differentiation
% by SeHyoun Ahn, June 2016
%%

%%
% An html file properly marked up comments is avaiable at <http://www.princeton.edu/~sehyouna/EXAMPLE_AutoDiff_Syntax.html>

% Add folder containing <@XXX>. In this case, it is in the parent folder.
addpath('../');

%% Simple Example
% \$\$f_1(x,y,z) = x^2+cos(y)*(x+z)+e^z\$\$
% \$\$f_2(x,y,z) = yz\$\$
% at \$(x,y,z) = (1,2,3)\$

v = myAD([1;2;3]);
x=v(1); y=v(2); z=v(3);
f=[x^2+cos(y)*(x+z)+exp(z);
    y*z];
disp('The function evaluated at (1,2,3) is');
disp(getvalues(f));
disp('the derivatives evaluated at (1,2,3) are');
disp(full(getderivs(f)));

%% Example of Matrix Vector Multiplication
% \$\$ f = \begin{bmatrix} x & y & 0 \\ y& y& z \\ 0 & z & z
% \end{bmatrix} \begin{bmatrix}x\\y\\z \end{bmatrix} = 
% \begin{bmatrix} x^2+y^2\\  xy+y^2+z^2 \\ yz+z^2\end{bmatrix} \$\$
% evaluated at \$(x,y,z)=(1,2,3)\$

v=myAD([1:3]');
A=spdiags(v,0,3,3)+spdiags(v(2:3),-1,3,3)+spdiags(v,1,3,3);
f=A*v;
disp('f is');
disp(getvalues(f));
disp('The Jacobian of f evaluated at (1,2,3) is')
disp(full(getderivs(f)));

%%
% If you plan to use matrix multiplication in high dimensions,
% refer to the documentation to compile c-files for speed gains


%% Example of Using fsolve
% Given an implicitly defined variable \$z\$ from the relationship
% \$\$x^2+y^4+x\cdot (z-0.2)\cdot e^z=5 \$\$ solving for \$\frac{dz}{dx}\$ and \$\frac{dz}{dy}\$ evaluated at \$(x,y)=(1,1)\$

% Refer to README.pdf for syntactic requirement on definition of functions.
% x = v(2), y = v(3), z = v(1)
func = @(v) v(2).^2+v(3).^4+v(2)*(v(1)-0.2)*exp(v(1))-5;
v0 = myAD([1;1]);            % Initialize x and y
z=fsolve(func, 0.5 ,v0);     % Refer to documentation for syntax
disp('Solution of z is given by');
disp(getvalues(z));
disp('The derivatives at (x,y)=(1,1) are');
disp(getderivs(z));

matlab compile c file result

compile_mex_files
Verbose mode is on.
... Looking for compiler 'MinGW64 Compiler (C)' ...
... Looking for environment variable 'MW_MINGW64_LOC' ...Yes ('C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset').
... Looking for file 'C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc.exe' ...Yes.
... Looking for folder 'C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset' ...Yes.
Found installed compiler 'MinGW64 Compiler (C)'.
Set PATH = C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin;D:\programinstalls\Polyspace\R2020a\extern\include\win64;D:\programinstalls\Polyspace\R2020a\extern\include;D:\programinstalls\Polyspace\R2020a\simulink\include;D:\programinstalls\Polyspace\R2020a\lib\win64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp;D:\programinstalls\Java\JDK14\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath";";C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\PSTools;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;D:\CTEX\UserData\miktex\bin;D:\CTEX\MiKTeX\miktex\bin;D:\CTEX\CTeX\ctex\bin;D:\CTEX\CTeX\cct\bin;D:\CTEX\CTeX\ty\bin;D:\CTEX\Ghostsc ript\gs9.05\bin;D:\CTEX\GSview\gsview;D:\CTEX\WinEdt";D:\programinstalls\Polyspace\R2020a\runtime\win64;D:\programinstalls\Polyspace\R2020a\bin;D:\programinstalls\MATLAB\R2018b\runtime\win64;D:\programinstalls\MATLAB\R2018b\bin;D:\programinstalls\Polyspace\R2020a\polyspace\bin;C:\Users\tulipsliu\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\NVIDIA Corporation\Nsight Compute 2019.5.0\;D:\programinstalls\Git\cmd;C:\Users\tulipsliu\anaconda3;C:\Users\tulipsliu\anaconda3\Library\mingw-w64\bin;C:\Users\tulipsliu\anaconda3\Library\usr\bin;C:\Users\tulipsliu\anaconda3\Library\bin;C:\Users\tulipsliu\anaconda3\sc ripts;C:\Users\tulipsliu\AppData\Local\Microsoft\WindowsApps;C:\Users\tulipsliu\AppData\Roaming\TinyTeX\bin\win32;
Set INCLUDE = C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\include;;C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\include;;
Set LIB = C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\lib;;C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\lib;;
Set MW_TARGET_ARCH = win64;win64;
Set LIBPATH = D:\programinstalls\Polyspace\R2020a\extern\lib\win64;D:\programinstalls\Polyspace\R2020a\extern\lib\win64;
Options file details
-------------------------------------------------------------------
	Compiler location: C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset
	Options file: C:\Users\tulipsliu\AppData\Roaming\MathWorks\MATLAB\R2020a\mex_C_win64.xm l
	CMDLINE2 : C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc -m64 -Wl,--no-undefined -shared -static -s -Wl,"D:\programinstalls\Polyspace\R2020a/extern/lib/win64/mingw64/exportsmexfileversion.def" C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\valXder.obj C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\c_mexapi_version.obj   -L"D:\programinstalls\Polyspace\R2020a\extern\lib\win64\mingw64" -llibmx -llibmex -llibmat -lm -llibmwlapack -llibmwblas -o valXder.mexw64
	CC : C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc
	COMPILER : C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc
	DEFINES : -DMX_COMPAT_64  -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -m64 -DMATLAB_MEX_FILE 
	MATLABMEX : -DMATLAB_MEX_FILE 
	CFLAGS : -fexceptions -fno-omit-fr ame-pointer
	INCLUDE : -I"D:\programinstalls\Polyspace\R2020a/extern/include" -I"D:\programinstalls\Polyspace\R2020a/simulink/include" -I"D:\programinstalls\Polyspace\R2020a/extern\lib\win64\mingw64"
	COPTIMFLAGS : -O2 -fwrapv -DNDEBUG
	CDEBUGFLAGS : -g
	LD : C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc
	LINKER : C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc
	LDTYPE : -shared -static
	LDFLAGS : -m64 -Wl,--no-undefined
	LINKEXPORT : -Wl,"D:\programinstalls\Polyspace\R2020a/extern/lib/win64/mingw64/mexFunction.def"
	LINKEXPORTVER : -Wl,"D:\programinstalls\Polyspace\R2020a/extern/lib/win64/mingw64/exportsmexfileversion.def"
	LIBLOC : D:\programinstalls\Polyspace\R2020a\extern\lib\win64\mingw64
	LINKLIBS : -L"D:\programinstalls\Polyspace\R2020a\extern\lib\win64\mingw64" -llibmx -llibmex -llibmat -lm -llibmwlapack -llibmwblas
	LDOPTIMFLAGS : -s
	LDDEBUGFLAGS : -g
	OBJEXT : .obj
	LDEXT : .mexw64
	SETENV : set COMPILER=C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc
                set CXXCOMPILER=C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\g++
                set COMPFLAGS=-c -fexceptions -fno-omit-fr ame-pointer -DMX_COMPAT_64  -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -m64 -DMATLAB_MEX_FILE  -DMATLAB_MEX_FILE 
                set CXXCOMPFLAGS=-c -fexceptions -fno-omit-fr ame-pointer -std=c++11 -DMX_COMPAT_64  -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -m64 -DMATLAB_MEX_FILE  -DMATLAB_MEX_FILE 
                set OPTIMFLAGS=-O2 -fwrapv -DNDEBUG
                set DEBUGFLAGS=-g
                set LINKER=C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc
                set CXXLINKER=C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\g++
                set LINKFLAGS=-m64 -Wl,--no-undefined -shared -static -L"D:\programinstalls\Polyspace\R2020a\extern\lib\win64\mingw64" -llibmx -llibmex -llibmat -lm -llibmwlapack -llibmwblas -Wl,"D:\programinstalls\Polyspace\R2020a/extern/lib/win64/mingw64/mexFunction.def"
                set LINKDEBUGFLAGS=-g
                set NAME_OUTPUT=-o "%OUTDIR%%MEX_NAME%%MEX_EXT%"
	MINGWROOT : C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset
	MATLABROOT : D:\programinstalls\Polyspace\R2020a
	ARCH : win64
	SRC : "E:\DSGEstudio\ReviewofEconomicDynamics\hadsge-master\MATLABAutoDiff-master\@myAD\private\valXder.c";"D:\programinstalls\Polyspace\R2020a\extern\version\c_mexapi_version.c"
	OBJ : C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\valXder.obj;C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\c_mexapi_version.obj
	OBJS : C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\valXder.obj C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\c_mexapi_version.obj 
	SRCROOT : E:\DSGEstudio\ReviewofEconomicDynamics\hadsge-master\MATLABAutoDiff-master\@myAD\private\valXder
	DEF : C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\valXder.def
	EXP : "valXder.exp"
	LIB : "valXder.lib"
	EXE : valXder.mexw64
	ILK : "valXder.ilk"
	MANIFEST : "valXder.mexw64.manifest"
	TEMPNAME : valXder
	EXEDIR : 
	EXENAME : valXder
	COMPFLAGS : -O2 -ftree-vectorize -ftree-vectorize-verbose=7 -fopt-info-missed -Wall
	OPTIM : -O2 -fwrapv -DNDEBUG
	LINKOPTIM : -s
	CMDLINE1_0 : C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc -c -DMX_COMPAT_64  -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -m64 -DMATLAB_MEX_FILE  -I"D:\programinstalls\Polyspace\R2020a/extern/include" -I"D:\programinstalls\Polyspace\R2020a/simulink/include" -I"D:\programinstalls\Polyspace\R2020a/extern\lib\win64\mingw64" -fexceptions -fno-omit-fr ame-pointer -O2 -fwrapv -DNDEBUG "E:\DSGEstudio\ReviewofEconomicDynamics\hadsge-master\MATLABAutoDiff-master\@myAD\private\valXder.c" -o C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\valXder.obj
	CMDLINE1_1 : C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc -c -DMX_COMPAT_64  -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -m64 -DMATLAB_MEX_FILE  -I"D:\programinstalls\Polyspace\R2020a/extern/include" -I"D:\programinstalls\Polyspace\R2020a/simulink/include" -I"D:\programinstalls\Polyspace\R2020a/extern\lib\win64\mingw64" -fexceptions -fno-omit-fr ame-pointer -O2 -fwrapv -DNDEBUG "D:\programinstalls\Polyspace\R2020a\extern\version\c_mexapi_version.c" -o C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\c_mexapi_version.obj
-------------------------------------------------------------------
Building with 'MinGW64 Compiler (C)'.
C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc -c -DMX_COMPAT_64  -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -m64 -DMATLAB_MEX_FILE  -I"D:\programinstalls\Polyspace\R2020a/extern/include" -I"D:\programinstalls\Polyspace\R2020a/simulink/include" -I"D:\programinstalls\Polyspace\R2020a/extern\lib\win64\mingw64" -fexceptions -fno-omit-fr ame-pointer -O2 -fwrapv -DNDEBUG "E:\DSGEstudio\ReviewofEconomicDynamics\hadsge-master\MATLABAutoDiff-master\@myAD\private\valXder.c" -o C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\valXder.obj
C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc -c -DMX_COMPAT_64  -DMATLAB_DEFAULT_RELEASE=R2017b  -DUSE_MEX_CMD   -m64 -DMATLAB_MEX_FILE  -I"D:\programinstalls\Polyspace\R2020a/extern/include" -I"D:\programinstalls\Polyspace\R2020a/simulink/include" -I"D:\programinstalls\Polyspace\R2020a/extern\lib\win64\mingw64" -fexceptions -fno-omit-fr ame-pointer -O2 -fwrapv -DNDEBUG "D:\programinstalls\Polyspace\R2020a\extern\version\c_mexapi_version.c" -o C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\c_mexapi_version.obj
C:\ProgramData\MATLAB\SupportPackages\R2020a\3P.instrset\mingw_w64.instrset\bin\gcc -m64 -Wl,--no-undefined -shared -static -s -Wl,"D:\programinstalls\Polyspace\R2020a/extern/lib/win64/mingw64/exportsmexfileversion.def" C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\valXder.obj C:\Users\TULIPS~1\AppData\Local\Temp\mex_31013047926362_8484\c_mexapi_version.obj   -L"D:\programinstalls\Polyspace\R2020a\extern\lib\win64\mingw64" -llibmx -llibmex -llibmat -lm -llibmwlapack -llibmwblas -o valXder.mexw64
Error using mex
C:/ProgramData/MATLAB/SupportPackages/R2020a/3P.instrset/mingw_w64.instrset/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
cannot open output file valXder.mexw64: Permission denied
collect2.exe: error: ld returned 1 exit status


Error in compile_mex_files (line 2)
mex -v -largeArrayDims COMPFLAGS='-O2 -ftree-vectorize -ftree-vectorize-verbose=7 -fopt-info-missed -Wall' valXder.c;

Daniel tulips MATLAB C++ compile setup

Daneil’s Computer ,the MATLAB set the MinGW 64-bit C++ compiler .
Download from MATHWORK company

>> mex -setup
MEX configured to use 'MinGW64 Compiler (C)' for C language compilation.

To choose a different language, select one from the following:
 mex -setup C++ 
 mex -setup FORTRAN
MEX configured to use 'MinGW64 Compiler (C++)' for C++ language compilation.
>> 

Enjoy

*** Yours *** Daniel tulips liu.

2020/06/08

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-6-12 08:18:09
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-6-12 12:57:00
西门高 发表于 2020-6-12 08:18
谢谢分享
国内分享最多,最厉害的老师是 李向阳老师。

他的水平非常高。他2017年初的书籍《动态随机一般均衡(DSGE)模型:理论、方法和Dynare实践》是非常强的。

其实那本书也有点深,李向阳老师具有微软软件工程师证书。他也非常精通 C++ 语言。

dynare 是 C++ 语言开发的,里面大量的速度很快的程序。而且不是傻瓜软件,要精通需要有一定的知识水平。

我给你的建议是:去加入李向阳老师的课程。

国内这个论坛,好几个人开课,有的6000,李向阳老师出书,也开视频课程。
初级1000吧高级2000。

其实以他的水平,完全可以碾压其他开课程的人。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群