蒙特卡罗仿真基于MATLAB与c语言混合编程

蒙特卡罗仿真基于MATLAB与c语言混合编程_第1张图片 蒙特卡罗仿真基于MATLAB与c语言混合编程_第2张图片

 

代码如下:

function y=carlo(n,k)
%n is the number of simulations
%k is the number of trails
%y is the reslut of every trails
y=sum(sign(0.51-rand(n,k)));
hist(y);

---------------------------------------------------------------------------------------------------------------------------------------------

#include "stdio.h"
#include "stdlib.h"
#include "carlo.h"

void disp(const mxArray *);

void main(int argc,char *argv[])
{
    double n,k;
    if (argc==1||argc==2)
    {
        printf("please enter two num,n and k");
        exit(1);
    }
    else
    {
        n=(double)atoi(argv[1]);
        k=(double)atoi(argv[2]);
    }

    if(!mclInitializeApplication(NULL,0))
    {
        printf("can't InitializeApplication");
        exit(1);
    }
    if(!carloInitialize())
    {
        printf("can't InitializeLibary");
        exit(1);
    }

    mxArray *N,*K,*Y=NULL;
    N=mxCreateDoubleScalar(n);
    K=mxCreateDoubleScalar(k);

    mlfCarlo(1,&Y,N,K);
    disp(Y);

    mclWaitForFiguresToDie(NULL);
    mxDestroyArray(N);
    mxDestroyArray(K);
    mxDestroyArray(Y);
    carloTerminate();
    mclTerminateApplication();

}

void disp(const mxArray *in)
{
    int i,j,r,c;
    double *data;

    data=mxGetPr(in);
    r=mxGetM(in);
    c=mxGetN(in);
   
    printf("the result is/n");
    for(i=0;i<r;i++)
        for(j=0;j<c;j++)
            printf("%.0lf/t",data[i*c+j]);

}

你可能感兴趣的:(编程,c,function,null,matlab,语言)