社区
C++ Builder
帖子详情
如何在cb中调用matlab的函数?
myfault
2003-08-23 10:53:20
如何在cb中调用matlab的函数?
...全文
63
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 是辅助功能 注意:impvol
函数
比金融工具箱的
函数
blsimpv 快得多(950
调用
价格,其他参数固定,impvol 快约 600 倍)。
MATLAB
函数
句柄
之前一直在用,也知道这么个东西,但是没怎么总结。感觉
matlab
函数
句柄就是c语言里面的
函数
指针,在
matlab
里面叫它handle,句柄嘛,有了它就可以操纵这个对象(这里也可以叫做
函数
),这个概念其实可以推广到很多东西,图形fig,自定义
函数
句柄(也就是下面将会展示的),
matlab
自带
函数
句柄,以及某些
函数
返回的
函数
句柄,某些类对象或者表达式,也可以叫做句柄。 1、何为
函数
句柄?
函数
句柄...
matlab
函数
输出 向量,
matlab
中
的
函数
返回向量
我有一个
函数
在
MatLab
中
返回一个向量,问题是
函数
应该返回一个无符号整数值,我调试了我的代码,我意识到当我执行 bitand 和 bitxor 操作时变量 galois_value 变为向量 . 我试图做一个 typecast 将矢量转换为无符号值但是没有试图强制转换,但是也没有用 . 功能下方:function galois_value = galois_mul2( value )hex = ...
Matlab
中
的滤波器
firls设计了一个线性相位FIR滤波器,该滤波器可以最大限度地减少理想分段线性
函数
与滤波器在一组所需频带上的幅度响应之间的加权积分平方误差。例如,我们将滤波器的参数保存成mat文件,如果我们在程序
中
需要使用到滤波器,那么首先将mat文件导入,然后进行赋值。设计完滤波器之后如果我们想要以
函数
的方式使用我们的滤波器,那么我们可以将设计的滤波器保存成一个
函数
。在
matlab
中
我们需要生成滤波器时,可以使用
matlab
中
自带的工具。将其保存到我们需要使用滤波器的目录下,就可以像使用
函数
一样使用滤波器。...
matlab
用不了
函数
,
matlab
脚本
调用
函数
wow用不了
方法一:PublicFunctionFastReplace(SSrch$,SFind$,SRepl$)AsStringDimSrc()AsByte,Dst()AsByte,R()AsByte,F()AsByteDimLenF&,LenR&,LenDst&,i&,j&,OutPos&ConstChunkSize&=4096IfSSrch=""O...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章