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

22 篇文章 0 订阅

 

代码如下:

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]);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值