楼主: fantuanxiaot
10939 411

[源码分享] Matlab(R2010a)和Visual C++6.0混编试验[by fantuanxiaot]   [分享]

助理

Ψ▄┳一大卫卍卐席尔瓦

大师

9%

还不是VIP/贵宾

-

威望
7
论坛币
-235060 个
通用积分
15.3381
学术水平
3780 点
热心指数
3816 点
信用等级
3451 点
经验
150465 点
帖子
7694
精华
32
在线时间
1323 小时
注册时间
2013-2-3
最后登录
2019-10-31

初级学术勋章 初级热心勋章 中级热心勋章 中级学术勋章 初级信用勋章 中级信用勋章 高级热心勋章 高级学术勋章 特级学术勋章 特级热心勋章 高级信用勋章 特级信用勋章

fantuanxiaot 发表于 2015-4-27 21:03:36 |显示全部楼层

本帖隐藏的内容

如果是第一次使用,则要设置一下Visual C++6.0 编程环境中的include和lib的路径指向。

1 配置:Visual C++6.0 编译环境的设置:通过菜单 Tools(工具)/Options(选项),打开Visual C++6.0设置属性页,进入 Directorie页面(选项页面)
在 Show Directories for(目录列表)下拉列表中选择Include Files
添加路径:E:\Program Files\MATLAB\R2010a\extern\include(这是我电脑中Matlab的安装路径)
再选择下拉列表中的 Library Files
添加路径:E:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft

1.jpg


2.jpg


2,试验:
新建一个工程(win32 Application Console)
建立空工程

3.jpg


新建一个C++文件
代码如下:
  1. #include <iostream.h>
  2. #include <iomanip.h>
  3. #include <stdlib.h>
  4. #include <windows.h>
  5. #include "engine.h"
  6. #include "mat.h"
  7. void main()
  8. {
  9.         double* b;
  10.         double a[9]={1,4,7,2,5,8,3,6,9};
  11.         const char* file="mymat.mat";
  12.         mxArray* Ain;
  13.         mxArray* Aout;
  14.         mxArray* SV;
  15.         Engine* ep;
  16.         MATFile* mat;

  17.         mat=matOpen(file,"w");
  18.         Ain=mxCreateDoubleMatrix(3,3,mxREAL);
  19.         mxSetClassName(Ain,"z");
  20.         //  复制文件
  21.         memcpy((char*)mxGetPr(Ain),(char*)a,sizeof(a));
  22.         //  Ain以z的名称放入到mat文件中
  23.         matPutVariable(mat,"z",Ain);
  24.         matClose(mat);
  25.         mxDestroyArray(Ain);

  26.         mat=matOpen(file,"r");
  27.         Aout=matGetVariable(mat,"z");
  28.         //  开启Matlab的引擎

  29.         if(ep=engOpen(NULL))
  30.         try
  31.         {
  32.                 engPutVariable(ep,"z",Aout);
  33.                 engEvalString(ep,"sv=svd(z);");
  34.                 //  从引擎中拿出变量
  35.                 SV=engGetVariable(ep,"sv");
  36.                 //  获取地址
  37.                 b=mxGetPr(SV);
  38.                 cout<<"A矩阵"<<"\n";
  39.                 for(int j=0;j<=2;j++)
  40.                 {
  41.                     cout<<setw(16)<<b[j];
  42.                 }
  43.                 cout<<"\n";
  44.                 engClose(ep);
  45.                 matClose(mat);
  46.                 mxDestroyArray(Aout);
  47.                 mxDestroyArray(SV);

  48.         }
  49.         catch(...)
  50.         {
  51.                 cout<<"开启失败"<<"\n";
  52.         }
  53.                


  54. }
复制代码


然后在工程的设置->连接的对象/库模块
加入
libeng.lib libmx.lib libmat.lib
就OK啦                                                      4.jpg


编译和运行都是顺利通过的!

5.jpg












关键词:fantuanxiaot MATLAB Visual atlab matla microsoft include 电脑

回帖推荐

duststar 发表于221楼  查看完整内容

fantuanxiaot 还是很博学的,但有时也要注意 工具是死的,只有不断实战,才能更好提高

duyang76 发表于8楼  查看完整内容

fantuanxiaot,收我为徒吧
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献
arthas2160 + 5 + 1 + 1 + 1 精彩帖子
kychan + 100 + 5 + 5 + 5 精彩帖子
jerker + 60 + 60 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 260  论坛币 + 65  学术水平 + 16  热心指数 + 16  信用等级 + 16   查看全部评分

本帖被以下文库推荐

stata SPSS
jerker 发表于 2015-4-27 21:11:01 |显示全部楼层

回帖奖励 +3

fantuanxiaot,你可以下山了
已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 5 + 5 精彩帖子

总评分: 经验 + 5  论坛币 + 5   查看全部评分

回复

使用道具 举报

duyang76 发表于 2015-4-27 21:40:30 |显示全部楼层

回帖奖励 +3

看看什么内容!
回复

使用道具 举报

ydb8848 发表于 2015-4-27 21:40:48 |显示全部楼层

回帖奖励 +3

回复

使用道具 举报

duyang76 发表于 2015-4-27 21:42:13 |显示全部楼层

回帖奖励 +3

好东西,谢谢分享!
回复

使用道具 举报

ydb8848 发表于 2015-4-27 21:42:56 |显示全部楼层

回帖奖励 +3

回复

使用道具 举报

ydb8848 发表于 2015-4-27 21:45:16 |显示全部楼层

回帖奖励 +3

回复

使用道具 举报

duyang76 发表于 2015-4-27 21:46:04 |显示全部楼层

回帖奖励 +3

fantuanxiaot,收我为徒吧
已有 2 人评分经验 论坛币 收起 理由
fantuanxiaot + 20 精彩帖子
jerker + 12 + 12 摆酒,哈哈

总评分: 经验 + 32  论坛币 + 12   查看全部评分

回复

使用道具 举报

ydb8848 发表于 2015-4-27 21:47:05 |显示全部楼层
回复

使用道具 举报

cntagu 发表于 2015-4-27 21:50:54 |显示全部楼层

回帖奖励 +3

学习学习。。。。
回复

使用道具 举报

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

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-11-17 11:36