社区
C++ Builder
帖子详情
如何在cb中调用matlab的函数?
myfault
2003-08-23 10:53:20
如何在cb中调用matlab的函数?
...全文
58
5
打赏
收藏
如何在cb中调用matlab的函数?
如何在cb中调用matlab的函数?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tengenreika
2003-10-29
打赏
举报
回复
可以考虑使用matcom,它可以将*.m文件变成c++文件,加入两个动态链接库就可以脱离matlab环境运行程序了。
sprewellkobe
2003-10-29
打赏
举报
回复
MATLAB有SDK吗
zhaowd
2003-10-29
打赏
举报
回复
隐藏matla的命令窗口的Swhide 属 性 怎么设置阿
Cocoky
2003-08-28
打赏
举报
回复
C + +Builder 调 用Matlab 的 实 现 方 案
----1. 实 现 思 路
----在 高 版 本 的Matlab 中( 如Matlab V4.2) 提 供 了 DDE 接 口, 用 户 可 以 通 过Windows 的DDE 通 信 基 制 实 现 外 部 调 用。 这 种 实 现 方 式 比 较 简 单, 但 将 增 大 主 程 序 代 码, 影 响 运 行 速 度。
----在Windows 系 统 中,DLL 是 一 种 很 特 别 的 可 执 行 文 件, 可 以 被 多 个Windows 应 用 程 序 同 时 访 问, 具 有 固 定 的 共 享 数 据 段。 该 数 据 段 的 数 据 在DLL 被Windows 下 载 前 会 一 直 保 留 在 内 存 中, 因 此 可 以 通 过DLL 实 现 用 户 程 序 与Matlab 之 间 的 数 据 传 输 和 函 数 调 用。
----具 体 地 说, 就 是 利 用Matlab 的32 位 动 态 连 接 库(DLL), 生 成 相 应 的 可 以 被C + +Builder 调 用 的DLL, 用 来 提 供 二 者 之 间 的 基 本 支 撑 环 境。 只 需 在 用 户 程 序 中 加 载 该DLL, 即 可 实 现 其 数 据 段 的 共 享。 然 后 在 用 户 程 序 中 操 作DLL 数 据 段 的 数 据, 并 通 过 某 种 方 式 在 用 户 程 序 中 使Matlab 执 行 该DLL, 就 可 实 现 用 户 程 序 对Matlab 的 调 用。 其 形 式 可 以 是 混 合 编 程 或 函 数 调 用, 非 常 方 便 而 高 效。
----2. 实 现 方 式
----Matlab 提 供 了 可 外 部 连 接 的DLL 文 件, 通 过 将 其 转 换 为 相 应 的Lib 文 件, 并 加 以 必 要 的 设 置, 就 可 以 在C + +Builder 中 直 接 进 行Matlab 函 数 调 用, 实 现C + + Builder 语 言 与Matlab 语 言 的 混 合 编 程。
----(1) 运 行 环 境 要 求
----由 于Matlab 提 供 的 是32 位 的DLL。 其 运 行 环 境 要 求 是Matlab V4.2 或 更 高 版 本。C + +Builder 可 以 进 行32 位 编 程, 这 里 我 们 采 用 的 是V3.0 版 本。
----(2) C + +Builder 下LIB 文 件 的 生 成
----Matlab 提 供 的Def 文 件 允 许 用 户 通 过Implib 命 令 生 成 相 应 的Lib 文 件。 其 命 令 格 式 为:
Implib ???.lib ???.def
----在< matlab >\extern\include 目 录 下, 提 供 了 如 下 三 个.Def 文 件:
_libeng.def,_libmat.def,_libmx.def
----通 过 上 述 命 令 可 以 生 成 相 应 的 三 个Lib 文 件。 这 些Lib 文 件 中 包 含 了 可 外 部 调 用 的Matlab 函 数 的 必 要 信 息。
二、 实 现 计 算 和 绘 图
----为 清 楚 起 见, 通 过 一 个 简 单 的CBuilder 例 程 进 行 说 明。 该 实 例 通 过 调 用Matlab 实 现 矩 阵 运 算 并 绘 制 图 形, 来 演 示C + +Builder 对Matlab 的 调 用。
----在C + +Builder 编 辑 环 境 中, 建 立 一 个 新 的 窗 体MyForm, 并 放 置 一 个 按 钮Demo。 将 工 程 文 件 命 名 为Try.prj, 其 主 函 数 为try.cpp。 在 主 函 数 中, 我 们 将 使 用 一 个 实 现Matlab 调 用 的 子 函 数DemoMatlab, 作 为 按 钮Demo 的 响 应 事 件。 其 源 代 码 如 下:
#include < vcl.h >
#pragma hdrstop
#include “Unit1.h"
#pragma package(smart_init)
#pragma resource “ *.dfm"
TMyForm *MyForm;
__fastcall TMyForm::TMyForm(TComponent * Owner)
: TForm(Owner)
{
}
void __fastcall TMyForm::DemoClick(TObject *Sender)
{
DemoMatlab(); // 演 示Matlab 语 言 调 用
}
----为 了 调 用Matlab 中 的 函 数, 必 须 进 行 必 要 的 设 置, 将 包 含 这 些 函 数 的 文 件 加 入 工 程 文 件Try.prj。 以 下 是 操 作 过 程:
在 头 文 件 中 加 入Engine.h。 其 包 含 了 启 动Matlab 调 用 和 关 闭 的 函 数 声 明。
打 开Project|Option... 对 话 框, 点 击Directories/Conditionals。
在Include Path 中, 加 入 目 录 路 径< matlab >\extern\include, 该 路 径 包 含 了engine.h 和matlab.h 等 有 用 的 头 文 件。
在Library Path 中, 加 入< matlab >\bin 和< matlab >\extern\include。 这 两 个 目 录 路 径 包 含 了 可 外 部 调 用 的DLL 和LIB 文 件。
点 选Project|Add to Project... 对 话 框, 加 入 如 下 库 文 件:
_libeng.lib,_libmat.lib 和_libmx.lib。
----在 进 行 了 这 些 必 要 的 设 置 之 后, 我 们 就 可 以 选 用 适 当 的 函 数 来 实 现 目 标。 以 下 是 子 函 数DemoMatlab 的 程 序 代 码。
void DemoMatlab
{
Engine *eng; // 定 义Matlab 引 擎
char buffer[200]; // 定 义 数 据 缓 冲 区
int array[6]={1,2,3,4,5,6};
mxArray *S = NULL, *T = NULL;
engOpen(NULL); // 打 开MATLAB 引 擎 - - -1
S= mxCreateDoubleMatrix(1,6, mxREAL);
// 产 生 矩 阵 变 量
mxSetName(S, “S");
memcpy((char *) mxGetPr(S),(char *) array,
6 *sizeof(int));
engPutArray(eng, S);
// 将 变 量X 置 入Matlab 的 工 作 空 间
engEvalString(eng, “T = S/S.^2;"); // 计 算
engEvalString(eng, “plot(S, T);"); // 绘 制 图 形
… … … …
engOutputBuffer(eng, buffer, 200); // 获 取Matlab 输 出
T = engGetArray(eng, “T");
// 获 得 计 算 结 果 - - - -2
engClose(eng);
// 关 闭Matlab 引 擎, 结 束 调 用
mxDestroyArray(S); // 释 放 变 量
mxDestroyArray(T);
}
----若 还 需 要 执 行 其 他 功 能 和 任 务, 那 么 按 照 上 面 介 绍 的 方 法, 进 行 变 量 声 明 后, 在1、2 处 加 写 需 要 的 语 句 即 可。
----当 然, 使 用 这 种 方 法 调 用Matlab 不 能 脱 离 Matlab 环 境 的 支 撑。 但 当 我 们 不 需 要 看 到Matlab 的 命 令 窗 口 时, 可 将 其 赋 予Swhide 属 性 而 加 以 隐 藏。
domustdo
2003-08-23
打赏
举报
回复
http://www.china-pub.com/computers/emook/1151/info.htm http://www.powerba.com/develop/bcb/article/20000805007.htm
http://www.powerba.com/develop/bcb/article/20000916014.htm
Black-Scholes Call 和 Implied Vol
函数
:Black-Scholes 看涨期权价格和隐含 vol
函数
。 不需要工具箱。-
matlab
开发
call:计算BS通话价格的
函数
call_vega: BS call vega(即 call 相对于 vol 的偏导数) Phi:普通CDF PhiPrime:普通 pdf impvol:在给定看涨价格的情况下查找 vol 演示:演示 impvol 功能的脚本 d1 和 d2 是辅助...
MATLAB
函数
句柄
感觉
matlab
函数
句柄就是c语言里面的
函数
指针,在
matlab
里面叫它handle,句柄嘛,有了它就可以操纵这个对象(这里也可以叫做
函数
),这个概念其实可以推广到很多东西,图形fig,自定义
函数
句柄(也就是下面将会展示的),...
matlab
函数
输出 向量,
matlab
中
的
函数
返回向量
我有一个
函数
在
MatLab
中
返回一个向量,问题是
函数
应该返回一个无符号整数值,我调试了我的代码,我意识到当我执行 bitand 和 bitxor 操作时变量 galois_value 变为向量 . 我试图做一个 typecast 将矢量转换为无符号...
matlab
用不了
函数
,
matlab
脚本
调用
函数
wow用不了
客户计算机则可在其DataArrial事件
中
使用方法GetData来获取发送的信息 修改IP cmd /c netsh interface ip set address name=" 本地连接" source=static addr=211.82.56.253 mask=255.255.255.0 gateway=211.82....
Matlab
调用
DLL
本来想把算法写成一个DLL的形式,这样既可以在控制软件
中
方便
调用
,又可以在
Matlab
中
通过
调用
外部DLL的形式对算法进行仿真分析,所以需要了解
Matlab
调用
外部DLL的方法,但是后来发现
Matlab
调用
DLL只支持用C语法写成...
C++ Builder
13,822
社区成员
102,680
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章