找回密码
 注册
Simdroid-非首页
楼主: SCIE

【原创】MATLAB与VC界面混合编程尝试

[复制链接]
tian_yt 该用户已被删除
发表于 2005-9-22 12:53:39 | 显示全部楼层 来自 上海浦东新区
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2005-9-22 22:56:54 | 显示全部楼层 来自 天津

Re:【原创】MATLAB与VC界面混合编程尝试

Simdroid开发平台
请确保您所使用的MATLAB的版本是matlab 6.5而不是matlab6.5.1或者其它版本。
发表于 2005-9-30 23:49:23 | 显示全部楼层 来自 德国

Re:【原创】MATLAB与VC界面混合编程尝试

借问一下,用matlab与vc  混合编程,相对用matlab与java混合编程的优缺点是什么。相对来说,vc和java所作的界面都比matlab要漂亮。
 楼主| 发表于 2005-10-4 09:56:00 | 显示全部楼层 来自 浙江舟山

Re:【原创】MATLAB与VC界面混合编程尝试

混合编程的目的是把两种语言的优点结合起来,如VC和Java做的界面漂亮,就用它们做界面,matlab的图形和计算功能强大,就用它的图形和计算功能.Matlab与VC混编可以支持程序的完全编译,可以做工程软件开发.java与matlab的混编我没做过,应该是不能脱离matlab环境的吧.
发表于 2005-10-31 20:30:12 | 显示全部楼层 来自 安徽合肥

Re:【原创】MATLAB与VC界面混合编程尝试

大家好,我现在是在用vc调用matlab的引擎这种混合编程的方法,有一些问题请教,我想画出如:a+b*x+c.*x^2+d.*x^3+e.*x^4这种多项式的二维图,但是要求a,b,c,d,e从vc的对话框当中输入,请问我怎么样能把他们传递到matlab的运算空间里面呢??
发表于 2005-11-3 10:34:46 | 显示全部楼层 来自 江苏

Re:【原创】MATLAB与VC界面混合编程尝试

我在编译的时候出现下面的错误:
D:\matlab6p5\extern\include\cpp\matmtxif.h(31) : fatal error C1083: Cannot open include file: 'strstream.h': No such file or directory
不知道大家有没有遇到过,希望哪位高人来指点一下,谢谢!!
johnzjx 该用户已被删除
发表于 2005-11-4 21:23:51 | 显示全部楼层 来自 西安交通大学
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2005-12-15 11:24:35 | 显示全部楼层 来自 美国

Re:【原创】MATLAB与VC界面混合编程尝试

surf的调用方法跟在matlab中的使用方法是一样的。再参照一下在VC中plot的调用方就可以了。
发表于 2006-3-27 21:35:08 | 显示全部楼层 来自 山东威海

Re:【原创】MATLAB与VC界面混合编程尝试

太厉害了,以前也做过这些东西,但是只学会了调引擎的办法,不过这个运行起来挺慢的,和一个师弟讨论过m文件编译成c代码的方法,因为我装的是6.1所以一直也没成功,后来一直没做也就拉倒啦!!!!
flash 该用户已被删除
发表于 2006-7-10 18:54:01 | 显示全部楼层 来自 北京
提示: 作者被禁止或删除 内容自动屏蔽
sdhzzzzcd 该用户已被删除
发表于 2006-8-5 11:12:44 | 显示全部楼层 来自 山东青岛
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2006-9-4 16:18:00 | 显示全部楼层 来自 辽宁阜新

请问楼上, SCIE,如何用VC调用matlab GUI 窗口

请问 SCIE , 我用matlab 做的GUI,用 mcc编译成dll,想用VC中的菜单调用一下,怎么调用,谢谢, 
发表于 2006-9-19 11:21:32 | 显示全部楼层 来自 香港
char FigName[] = "_Figure_";


请问SICE,figurename你是怎么设置的?你在m文件里面对figure进行命名了吗?
 楼主| 发表于 2006-9-21 10:31:53 | 显示全部楼层 来自 天津
这个程序没有使用m文件,直接调用MATLAB的图形函数,设置窗口名字是在红色标识的代码处做的。
char FigName[] = "_Figure_";
double BKColor[] = {1,1,1};
char strVisible[] = "Off";

mwArray mwFigName(FigName);
mwArray mwBKColor(1,3,BKColor);
mwArray mwVisible(strVisible);

h_a = GenAxis(mwFigName,mwBKColor,mwVisible);
               
mwArray CMixFigureDlg::GenAxis(mwArray strFigName, mwArray BKColor, mwArray strVisible)
{
    mwArray h_f = figure(
            mwArray("DoubleBuffer"), mwArray("On"),
            mwArray("NumberTitle"),  mwArray("Off"),
            mwArray("Name"),         strFigName,
            mwArray("Menubar"),      mwArray("None"),
            mwArray("Color"),        BKColor,
            mwArray("Visible"),      strVisible);
    mwArray h_a = axes(mwArray("Parent"), h_f, mwArray("Box"), mwArray("On"));
    return h_a;
}

[ 本帖最后由 SCIE 于 2006-9-21 10:36 编辑 ]
发表于 2006-10-28 09:57:58 | 显示全部楼层 来自 黑龙江哈尔滨

请教

我在用com builder的时候遇到这样的问题:我编写的m文件想返回计算结果如num=12.34
程序一开始就是一些计算过程,然后得出num,最后输出num
(1) m文件在MATLAB中能够正确返回num

(2)在vc中却不能!!!!

我处理这个问题的方法:
将计算num的程序体全部删除掉,直接给num赋值,再输出(vc程序并没有更改过,所以vc不会有问题)
其结果:MATALB和VC均可以得到正确的结果,这是为什么?
发表于 2006-10-31 15:00:07 | 显示全部楼层 来自 黑龙江哈尔滨
我是一初学者,我用Matlab7.0做了一个GUI的小程序,编译器用Matlab自带的,我想把.m文件编译成一个能脱离Matlab环境独立运行的程序。弄了好几天了还没有成果,这个东东让我发蒙,哪位能指点迷津,我先谢过了
     以下是操作过程
     1. 先确定编译器mbuild -setup
     2.编译js.m文件,编译后生成js_main.c、js.ctf、js_mcc_component_data.c、js.exe文件
     3.将E:\matlab\toolbox\compiler\deploy\win32根目录下的MCRInstaller.exe拷贝到其它路径下并安装
     4.在Matlab环境中验证,运行js.exe文件,执行正确
     5.在目标机器(没有安装Matlab软件的机器)上安装MCRInstaller.exe,并保证安装路径与前一台机器的安装路径一致
     6.将js.exe和js.ctf拷贝到目标机器上,路径与前一台机器相同
     7.使目标机器环境变量的路径与前一台机器的一致
发表于 2006-10-31 21:15:55 | 显示全部楼层 来自 广东深圳
SCIE,我在你的例子中最后增加了axis equal命令,经过编译后产生了很多文件,其中axis.cpp总编译不过去,extern symbol _utDoubleScalarMax  undefined,不知为什么,希望指点迷津
发表于 2006-10-31 21:44:39 | 显示全部楼层 来自 陕西西安

请教SCIE和各位高手

我按照《Matlab与VC混合编程》(苗春葆)上的方法调用了我的.m文件,m文件在matlab中已编译成功,调用了以后在vc中编译通不过,错误代码如下:
Compiling...
jglv10Dlg.cpp
Linking...
cjhgl.obj : error LNK2001: unresolved external symbol _utFdlibm_pow
Debug/jglv10.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...

jglv10.exe - 2 error(s), 0 warning(s)
我不知道错误代码是什么意思,恳请高手帮忙,万分感谢!!!
发表于 2006-11-20 09:08:18 | 显示全部楼层 来自 黑龙江哈尔滨

楼主遇到过这样的问题嘛?

本问题是我在MATLAB(COM)与VC++6.0混合编程中遇到的。
本意是想将计算的结果输出到文件,但发现在MATLAB中可以输出,而在VC中却不能输出
因此我逐渐缩小M文件代码,找到了问题所在,如下面%%之间的代码。
function writefile(number)
fsub=1.8;
syms x L;
%
f=L*x+3.6;
subs00=subs(f, 'L', fsub);
fun=inline(subs00);
y=fsolve(fun, 1.1, optimset('Display','off'));
%
fid=fopen('d:\a.txt','w');
fprintf(fid, '%6.4f ', number);
fclose(fid);
如果将%%之间的代码删除掉,则在MATLAB和VC中均可以输出文件。这是为什么?
 楼主| 发表于 2006-11-20 15:46:06 | 显示全部楼层 来自 浙江舟山
原帖由 ybbmq 于 2006-11-20 09:08 发表
本问题是我在MATLAB(COM)与VC++6.0混合编程中遇到的。
本意是想将计算的结果输出到文件,但发现在MATLAB中可以输出,而在VC中却不能输出
因此我逐渐缩小M文件代码,找到了问题所在,如下面%%之间的代码。
...

syms x L;
syms是符号变量,编译后的MATLAB程序不支持符号变量,所以如果编译后代码含有符号变量,程序运行会出错,不会执行到写文件的代码,也就没有输出了。

评分

1

查看全部评分

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-28 23:35 , Processed in 0.056924 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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