找回密码
 注册
Simdroid-非首页
查看: 191|回复: 0

c++调用matlab工具箱里的统计函数(处女帖)

[复制链接]
发表于 2006-4-5 18:22:19 | 显示全部楼层 |阅读模式 来自 北京海淀
各位好友大家好,前几天一直在论坛里学习c++与matla混合编程,拜读了涛taohe和四SCIE的精华帖,受益匪浅,今天简要将学习成果和大家交流一下,欢迎大家交流。

c++调用matlab工具箱里的统计函数的步骤:
1-建立getnormvalue.m文件,其中调用了matlab工具箱中的函数。
function gnv=getnormvalue(x,y,z)
gnv=normcdf(x,y,z);%符合N(y,z*z)分布的变量的分布函数的值,即对normpdf(概率密度)的积分

2-建立vc程序
(1)选择菜单Project-Settings-属性页Link-下拉列表中选择Input,在Object/library modules文本框中加入libmmfile.lib libmatlb.lib libmx.lib libmat.lib libmatpm.lib sgl.lib libmwsglm.lib libmwservices.lib
(2)选择C/C++属性页,在下拉列表中选择Preprocessor,在Preprocessor definitions中加入MSVC,IBMPC,MSWIND
(3)再在下拉框中选择Precomplied Headers,选中Automatic use of precompiled headers,在其中填入stdafx.h

3-将getnormvalue.m和normcdf.m加入到工程中
单击工具栏上的m++按钮,选中复选框Use Handle Graphics Library和Generate C++,去掉Generate main file
和Debug mode。然后确认并选择getnormvaluel.m,等待其完成m代码到C++代码的转换。

4-在对话框程序文件中C...Dlg.cpp中#include "stdafx.h"的下一行添加#include "matlab.hpp"和 #include "lmoptimal.hpp"

5-在C...Dlg类的OnInitDialog函数中添加如下代码:
  libmmfileInitialize();
  libmwsglmInitialize();
  mlfHGInitialize(NULL,NULL);

6-添加C...Dlg类对消息WM_DESTROY的响应函数OnDestroy(),在其中添加如下代码:
  // TODO: Add your message handler code here
  mlfHGTerminate();
  libmwsglmTerminate();
  libmmfileTerminate();

7-添加按钮响应函数CMatlabtoolDlg::OnButton1()   
  UpdateData();

  //正态分布的各参数初始化//
  mwArray x(m_x);
  mwArray u(m_u);
  mwArray q(m_q);
  mwArray r;
  
  r=getnormvalue(m_x,m_u,m_q);//调用编译的函数
  m_result=*mxGetPr(r.GetData());//获取返回的结果并显示
  UpdateData(false);

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-1 01:28 , Processed in 0.036490 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表