博文
通过mex文件VC和Matlab 的混合编程-myplot(2006-10-08 15:43:00)
摘要:
/* $Revision: 1.3 $ */
// Automatically generated by MATLAB Project Wizard version 1.0
//
// This is the gateway routine for a MATLAB Math/Graphics Library-based
// C MATLAB MEX File.
/*
本文的实例的开发和运行环境为 V i s u a l++6.0
和 Matlab 6.5,为了方便阅读,将yplot.c 文件
的主要程序代码源代码整理如下
link:
kernel32.lib user32.lib gdi32.lib winspool.lib
libmx.lib libmex.lib libmatlb.lib libmat.lib
>>myplot(1:1000,randn(1,1000))
*/
#include "mex.h"
#include "windows.h"
LRESULT WINAPI MainWndProc( HWND, UINT, WPARAM,LPARAM);
BOOL DrawData(
HWND hWnd, //窗口句柄
HDC hDC, //窗口DC的句柄
double * datax, //绘制图形的:轴数据
&n......
MATLAB常用命令 (2006-09-24 23:05:00)
摘要:MATLAB常用命令
小整理:MATLAB常用的基本数学函数
abs(x):纯量的绝对值或向量的长度
angle(z):复数z的相角(Phase angle)
sqrt(x):开平方
real(z):复数z的实部
imag(z):复数z的虚部
conj(z):复数z的共轭复数
round(x):四舍五入至最近整数
fix(x):无论正负,舍去小数至最近整数
floor(x):地板函数,即舍去正小数至最近整数
ceil(x):天花板函数,即加入正小数至最近整数
rat(x):将实数x化为分数表示
rats(x):将实数x化为多项分数展开
sign(x):符号函数 (Signum function)。
当x<0时,sign(x)=-1;
当x=0时,sign(x)=0;
当x>0时,sign(x)=1。
rem(x,y):求x除以y的馀数
gcd(x,y):整数x和y的最大公因数
lcm(x,y):整数x和y的最小公倍数
exp(x):自然指数
pow2(x):2的指数
log(x):以e为底的对数,即自然对数或
log2(x):以2为底的对数
log10(x):以10为底的对数
===============================================
小整理:MATLAB常用的三角函数
sin(x):正弦函数
cos(x):馀弦函数
tan(x):正切函数
asin(x):反正弦函数
acos(x):反馀弦函数
atan(x):反正切函数
atan2(x,y):四象限的反正切函数
sinh(x):超越正弦函数
cosh(x):超越馀弦函数
tanh(x):超越正切函数
asinh(x):反超越正弦函数
acosh(x):反超越馀弦函数
atanh(x):反超越正切函数
===============================================
变数也可用来存放向量或矩阵,并进行各种运算,如......
几种常见的混合编程方法(小结)(2006-09-23 19:36:00)
摘要:
1.使用MATLAB自带的MATLAB Compiler
2.利用MATLAB引擎
3.利用ActivX控件
4.利用MAT文件
5.C-MEX
6.利用Mideva/Matcom
7.利用Matrix<LIB>实现混合编程
8.利用MATLAB Add-in
9.MATLAB COM Builder
10.MATLAB和Excel混合编程......
MATLAB混合编程 的几本图书(2006-09-23 19:22:00)
摘要:最近应用 MATLAB混合编程 参考收集的几本图书 :
可能不太完整,最近几年的,截至日期:2006.09.23
题名
责任者
出版项
页码
价格
精通MATLAB 7.0混合编程
杨高波, 亓波
电子工业出版社,2006
260页
CNY29.80
精通Matlab与C/C++混合程序设计
刘维编
北京航空航天大学出版社,2005
305页
CNY36.00
深入浅出MATLAB7.x混合编程
董维国
机械工业出版社,2006
299页
CNY28.00
MATLAB扩展编程
何强,何英
清华大学出版社,2002
372页
CNY42.00
MATLAB 6.5应用接口编程
飞思科技
电子工业出版社,2003
295页
CNY28.00
MATLAB 外部程序接口 (6.x)
刘志俭, 潘献飞等
科学出版社,2002
401页
CNY39.00
Matlab接口技术与应用
余啸海
国防工业出版社,2004
292页
CNY26.00
MATLAB外部接口编程
张威
西安电子科技大学出版社,2004
208页
CNY20.00
MATLAB与外部程序接口
苏金明等
电子工业出版社,2004
289页
CNY29.00......
Matlab与C++接口与混合编程讨论小结(2006-09-22 12:31:00)
摘要:[分享]Matlab与C++接口与混合编程讨论小结(序)
说明:
由于比较系统,就单列出来,就不放在接口讨论中。这是偷来得。
本文主要对MIDEVA(Matcom)的使用方法作简单介绍。本文将版面上一些相关文章作了总结
并将精华区中的“用c编写mex程序”一文以及“VC++中使用MATLAB的C++数学库和MCC生成的程序”作为本文的第二章。
希望大家能对这 个主题有一个全面的了解,同时也能进行进一步的讨论和更广泛的交流。
目 录
第一章、概述
第二章、在Matlab中使用mex和mcc(作者dodoo,energy)
2.1 用c编写mex程序[1]--dodoo
2.2 用c编写mex程序[2]--dodoo
2.3 用c编写mex程序[3]--dodoo
2.4 用c编写mex程序[4]--dodoo
2.5 用c编写mex程序[5]--dodoo
2.6 用c编写mex程序[6]--dodoo
2.7 VC++中使用MATLAB的C++数学库和MCC生成的程序--energy
第三章、Matcom的使用
3.1 概述
3.1.1 Matcom能作什么
3.1.2 Matcom的工作原理
3.1.3 Matcom的不足
3.1.4 Matcom下载地址及网络资源
3.2 版本及安装注意事项
3.2.1 MIDEVA 4.0 的安装
3.2.2 MIDEVA 4.5 的安装
3.3 用Matcom翻译m文件
3.4 如何得到CPP源文件
3.5 在CB中C++与Matlab语言混编
3.6 程序的发布
附录一、Matcom的函数分类列表
--
第一章、概述
Matlab是当今世界上使用最为广泛的数学软件,它具有相当强大的数值计算、
数据处理、系统分析、图形显示,甚至符号运算功能,是一个完整的数学平
台,在这个平台上,你只需寥寥数语就可以完成十分复杂的功能,大大提高了
工程分析计算的效率。另外由于Matlab的广泛使用,于是出现了为各个领域专
门使用的工具箱(即在某一研究领域常用数......
VC++中编译MEX程序(2006-09-22 12:04:00)
摘要:VC++中编译MEX程序
1. 目的
一般情况下,我们都是在MATLAB命令行或DOS命令行下编译MEX程序。
所用的命令就是:mex filename.c
这有很多不方便的地方:
a. 虽然mex也可以编译C++的mex程序,但是它的主框架仍是C的
a. 当程序有多个模块时,需要多次使用mex命令,操作很麻烦
b. 不能利用VC特有的ClassWizard自动创建和维护类
c. 不能用MFC类库编写应用程序
d. 不能方便地进行类似VC的项目管理
e. 等等...
这样一个命令行的编程环境可能会大大束缚你的想象力...
其实解决问题的方法很简单,下面以VC6环境为例详细解说如何在IDE中编译MEX程序。
2. 步骤
(1)准备工作 (这里假设MATLAB的路径为:C:\MATLAB)
a. 由matlab.def创建库文件matlab.lib
进入c:\matlab\extern\include目录,用lib命令生成matlib.lib
C:\>cd \matlab\extern\include
C:\MATLAB\extern\include>lib /def:matlab.def /out:matlab.lib
Microsoft (R) Library Manager Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
LIB : warning LNK4068: /MACHINE not specified; defaulting to IX86
Creating library matlab.lib and object matlab.exp
C:\MATLAB\extern\include>
警告信息不用理它。
b. 修改mex.......
VC++调用MATLAB engine(2006-09-22 12:04:00)
摘要:VC++调用MATLAB engine
实验环境:
MATLAB5.3, Visual C++ 6.0 SP3
1 生成几个连接库文件
在目录 c:\matlab\extern\include 下找这几个文件:
libeng.def libmx.def libmat.def
在DOS行命令下生成三个库文件:
c:\msdev\bin\lib /def:libmat.def /out:libmat.lib
c:\msdev\bin\lib /def:libeng.def /out:libeng.lib
c:\msdev\bin\lib /def:libmx.def /out:libmx.lib
把生成的三个LIB文件加入你的LINK项
libeng.lib libmx.lib libmat.lib
2 写包含engine功能的文件
可以参考:
c:\matlab\extern\examples\eng_mat\engwindemo.c
注意: 可以用.CPP做后缀。比如:MATLAB.CPP
3 设置编译选项
把MATLAB.C加入你的PROJECT
MATLAB.C的开头加入两行:
#INCLUDE "stdafx.h"
#INCLUDE "engine.h"
包含其它头文件, 自己看情况而定
4 编写调用engine的函数
比如响应菜单调用自己的函数matlabPlot,而此函数的实现在matlab.cpp文件中实现,内容如下:
#include "stdafx.h"
#include "engine.h"
int MatlabDraw()
{
Engine *ep;
if (!(ep = engOpen(NULL))) {
MessageBox ((HWND)NULL,"Can't start MATLAB engine","Matlab Draw",MB_OK);
&n......