- 积分
- 0
- 注册时间
- 2006-3-6
- 仿真币
-
- 最后登录
- 1970-1-1
|
各位好友大家好,前几天一直在论坛里学习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
查看全部评分
-
|