MatCom与VC集成的问题(Matlab6.5+MatCom4.5)
环境:
MatLab6.5,MatCom4.5,VC6.0+sp2,操作系统WinXP+SP2
目标:利用matlab求解线性方程组,最终可执行程序脱离matlab环境。由于线性方程组系数矩阵A的病态程度非常严重,不能采用一般的方法求解,故采用matlab提供的预处理共轭梯度法(Preconditioned Conjugate Gradients method,matlab函数为pcg()),一般最小余项法(Generalized Minimum Residual method,matlab函数为gmres())等方法求解。
测试程序为win-console程序。
在matlab中建立.m文件,名为:lee_gmres.m,内容如下:
function X = lee_gmres(A,b);
%set(0,'RecursionLimit',1000);
X = gmres(A,b);
在matcom add-in 中选择“add m-files to current project in release mode",生成相应的.h和.cpp,编译。。。,出现两个错误:
iterchk.cpp(39) : error C2661: 'fcnchk' : no overloaded function takes 4 parameters
iterchk.cpp(53) : error C2065: 'func2str' : undeclared identifier
经过观察,好像这两个函数无关紧要,只为调试和显示出错信息,于是屏蔽掉他们,编译通过,运行。。。,弹出对话框,提示如下错误:
error: user supplied function==>乱码 called from 路径\工程名\iterapp.cpp
called from 路径\工程名\gmres.cpp
我是第一次用matcom,对matlab也不是很熟悉,到这里真的不知道该怎么办了,查了帮助和向导,不知其所以然,我想,如果可以直接在vc里用gmres()函数就可以了,可是不行,那又为什么能用别的matlab函数呢?
只有向在这方面有研究的高手求救了!
谢谢路过和发表自己看法的朋友们!
问题点数:200、回复次数:9Top
1 楼subtop(南来北往)回复于 2005-04-04 18:57:33 得分 0
vc6.0+sp6Top
2 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-04 19:38:45 得分 50
是不是函数对应的文件没有包含进去Top
3 楼subtop(南来北往)回复于 2005-04-04 19:49:47 得分 0
按matlab的说明,可以把.m文件所调用的函数全部转化为c++啊,再说了,如果是没有包含文件的话,那应该包含什么文件呢?我对这方面是一窍不通,所以,麻烦您说的详细一点,谢谢!Top
4 楼subtop(南来北往)回复于 2005-04-05 10:42:37 得分 0
看了一下"reference guide"里的linear algebra functions(线性代数函数),没有pcg,gmres等函数,可能matcom不能编译包含对上述函数调用的.m文件。也算是自己解决了吧。
希望其他朋友谈谈看法!Top
5 楼subtop(南来北往)回复于 2005-04-05 10:44:04 得分 0
看来只有自己写函数了:(Top
6 楼subtop(南来北往)回复于 2005-05-13 10:14:14 得分 0
怎么结帖啊,还请斑竹大人指点!Top
7 楼Rafier(小昌)回复于 2005-07-01 23:19:11 得分 50
还要加入必要的dll及lib
可以参考:http://www.vckbase.com/document/viewdoc/?id=1465Top
8 楼adashm(猫)回复于 2005-07-01 23:41:56 得分 50
不需要用matcom,纯matlab的m文件可以直接转化为*.cpp和*.h文件,然后在vc环境下编译为可执行程序就行了,但要保证没有画图函数,工具箱函数可以转化但在编译为独立可执行文件时有点麻烦,Top
9 楼adashm(猫)回复于 2005-07-01 23:44:48 得分 50
找本matlab接口的书看一下,照着一步步做就可以了,推荐MATLAB扩展编程 何强, 何英编著Top




