㈠ 我有问题想在Matlab中文论坛《精通Matlab与C/C++混合程序设计》版块问下刘维老师
字更加困难
字,请尝试使用MATLAB控制,然后是C + +控制的matlab
参考:
“MATLAB统计分析与应用:40个案例40
”掌握Matlab和C / C + +混合程序设计“
㈡ 精通matlab与c/c++混合程序设计第三版
zhe s sm a wo kan bu dong
㈢ matlab VC混合编程调用神经网络工具箱
调用MATLAB Engine虽然可以实现对神经网络工具箱的功能,但是因为这种方法是基于C/S模式的,效率很低,而且需要在matlab下实现其功能,无法脱离matlab直接运行,所以,基于这个原因,我放弃了利用MATLAB Engine来实现混合编程。利用C++数学库虽然可以脱离MATLAB直接运行,但是C++数学库并不支持神经网络工具箱,所以,无法实现基于神经网络的混合编程。利用mcc命令虽然可以直接生成.exe文件,并可以脱离MATLAB在VC++中直接运行,但是因为其自身的诸多缺点,这种方法并不能编译神经网络函数为C++文件,所以,也无法胜任这个任务。 最后,只有COM组件这一个办法了,由于COM组件技术的强大功能,利用matlab的COM Builder工具可以实现脱离matlab的混合编程,并成功的调用了神经网络工具箱。
㈣ 怎样用c#与matlab混合编程求解非线性方程组
你可以把matlab封装成dll给C#调用,上研究生的时候干过这个,具体怎么弄也记不太清楚了。
你可以参考一下这个:
http://wenku..com/link?url=__LGZC2ns0J_-C
㈤ matlab和c语言混合 怎么使用
input(..) 1、选项用于决定用户的输入是作为一个表达式看待,还是作为一个普通的字符串看待。例如: >> input('请输入一个矩阵:') 请输入一个矩阵:magic(3) ans = 8 1 6 3 5 7 4 9 2 >> input('请输入一个字符串:','s') 请输入一个字符串:ma...
㈥ matlaba与c混合编程中,函数的调用。
convolce.c也要编译,否则找不到函数的实现模块。
mexcorrDn.cconvolce.c
㈦ 如何将c文件在matlab simulink中混编
方法/步骤
菜单:工程→ 属性... 选择配置属性下的 VC++ 目录。在包含目录栏目中添加matlab相关的include文件。我的matlab装在F盘中,只要把F:\MatLab\extern\include\win64和F:\MatLab\extern\include两个目录配置上去就好,这里注意下要是win64的vs所建立的工程必须是x64的,否则会出错,比较低的版本则没有win64,只有win32 这样是建立一个x86或win32工程即可
在 库目录栏目中添加matlab相关的lib文件。例如:F:\MatLab\extern\lib\win32\microsoft;F:\MatLab\extern\lib\win32;F:\MatLab\extern\lib\win64\microsoft;F:\MatLab\extern\lib\win64;
注意这里是针对于不同的工程和机器位数,最好全部加上去,以免出错。
菜单:工程 属性 选择配置属性下的 连接器→ 输入。
在 附加依赖项 栏目中输入项目需要引用matlab的的lib文件库。
libmat.lib libeng.lib libmx.lib
菜单:工程 属性 选择配置属性下的 连接器→ 常规。
在 附加库目录 栏目中,添加库所在的目录名称。如:F:\MatLab\bin\win64
这一步相当的重要,不然的话,各种dll文件找不到,lib文件找不到之类的报错。
测试:从网上随便找一个代码
#include <iostream>#include <iomanip>using namespace std;#include <engine.h>#include <string.h>
void main(){ // 定义循环变量 int i = 0, j = 0;
// 状态变量
int nStatus = 0; // 定义MATLAB引擎指针 Engine *ep;
// 定义mxArray变量指针 mxArray *A, *B;
// 定义矩阵数组
// 注意:VC中矩阵的行列次序与MATLAB正好时相反,需要转置。 double arData[3][3] = {{7.5,16.3,9.6},{13.2,8.9,12.3},{9.6,5.4,13.7}}; double arResData[3][3];
// 输出原矩阵 cout<<"原矩阵为:"<<endl; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) { cout<<setw(10)<<arData[i][j]<<" "; } cout<<endl; } // 打开MATLAB引擎 ep = engOpen(NULL); if(ep == NULL) { cout<<"无法打开MATLAB引擎。"<<endl; exit(EXIT_FAILURE); }
// 是否显示MATLAB窗口:true-显示;false-隐藏。
nStatus = engSetVisible(ep, false);
if(nStatus != 0)
{
cout<<"设置MATLAB显示属性失败。"<<endl;
exit(EXIT_FAILURE);
}
// 为mxArray变量分配空间 A = mxCreateDoubleMatrix(3,3,mxREAL); B = mxCreateDoubleMatrix(3,3,mxREAL); if(A == NULL || B == NULL) { cout<<"为mxArray变量分配空间失败。"<<endl;
exit(EXIT_FAILURE); }
// 将数组中的数据写入到mxArray空间中
memcpy((void*)mxGetPr(A),(void*)arData,sizeof(arData));
// 将矩阵变量A写入到MATLAB引擎空间
nStatus = engPutVariable(ep,"A",A);
if(nStatus != 0)
{
cout<<"矩阵变量写入MATLAB引擎空间失败。"<<endl;
exit(EXIT_FAILURE);
}
// 执行引擎命令求矩阵A的逆矩阵
nStatus = engEvalString(ep,"B=inv(A)");
if(nStatus != 0)
{
cout<<"执行MATLAB引擎命令失败。"<<endl;
exit(EXIT_FAILURE);
}
// 从MATLAB引擎空间中读取执行结果
B = engGetVariable(ep,"B");
// 将矩阵变量B复制到数组arResData中
memcpy((void*)arResData,(void*)mxGetPr(B),sizeof(arResData));
// 释放矩阵变量空间
mxDestroyArray(A);
mxDestroyArray(B);
// 关闭MATLAB引擎
engClose(ep);
// 输出计算结果
cout<<"逆矩阵为:"<<endl;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
cout<<setw(10)<<arResData[i][j]<<" ";
}
cout<<endl;
}
// 暂停程序,查看结果
system("pause");
}
㈧ matlab与c混合编程,engOpen()的问题,matlab引擎启动不了
使用engOpen()打开Matlab引擎总是失败,问题可能就是Matlab组件没有注册。注册方法:点击开始/运行/cmd,在命令行提示窗口下更改到Matlab安装路径/bin,运行指令
matlab/regserver,注册成功后会弹出Matlab 命令窗口。
㈨ 高峰悬赏<精通Matlab与C_C++混合编程>电子版
MATLAB是一门计算机编程语言,取名来源于Matrix Laboratory,本意是专门以矩阵的方式来处理计算机数据,它把数值计算和可视化环境集成到一起,非常直观,而且提供了大量的函数,使其越来越受到人们的喜爱,工具箱越来越多,应用范围也越来越广泛。MATLAB的发展历史见下表1-1。(年份不详的请知道的网友补充。)时间
版本
1985 1.0
1986 2.0(含控制系统工具箱)
1988 3.9
1993 4.0(含Simulink1.0)
1994 4.2(含simulink2.0)
不详 4.3
不详 5.3
2000 6.0(含Simulink4.0)
2001 6.1(含Simulink4.1)
不详 6.21
2003 6.5
1.1 安装
MATLAB的安装非常简单,这里以Windows版本6为例。运行setup后,输入正确的序列号,选择好安装路径和安装的模块,几乎是一直回车就可以了。这里有一点要注意的是,由于不同操作系统设置,可能会出现一些意外错误,而且越高版本的MATLAB对计算机系统的要求也越高,如6.1版本要求至少64M内存,最好128M。所以根据自身情况选择适合的版本安装,最好还要在操作系统初安装后就安装,避免出现意外。
1.2 运行
MATLAB的启动运行:#:\MATLAB6p1\bin\win32\matlab.exe(其中#为安装盘符。)但一般安装完毕后会在安装目录下有一个快捷运行方式。
MATLAB启动后显示的窗口称为命令窗口,提示符为“>>”。一般可以在命令窗口中直接进行简单的算术运算和函数调用。如果重复输入一组表达式或计算复杂,则可以定义程序文件来执行达到目的。程序文件扩展名为“.m”,以文本文件形式保存。有两种方式运行程序文件:一是直接在MATLAB命令窗口输入文件名,二是选择File->Open打开m文件,弹出的窗口为MATLAB编辑器。这时可选择它的Debug菜单的Run子菜单运行。
1.3 帮助文件
学习MATLAB软件最好的教材是它的帮助文件。只要硬盘容量够大,极力推荐安装完整的帮助文档,即使你对阅读英文不是很有信心,但我相信其足够的实例还是能让你对要查询的命令函数有一定的了解的。有两种方法取得帮助信息:一是直接在命令窗口输入>>help 函数名;如help imread,会得到相应函数的有关帮助信息。二是在帮助窗口中查找相应信息。不同版本的帮助菜单界面有所不同,这只能依赖于你自己去熟悉了。但总体上都和windows的界面具有相似的处理过程。
1.4 MATLAB所定义的特殊变量及其意义变量名 意义
help 在线帮助命令, 如用help plot调用命令函数plot的帮助说明。
who 列出所有定义过的变量名称
ans 最近的计算结果的变量名
eps MATLAB定义的正的极小值=2.2204e-16
pi π值3.14159265...
inf ∞值,无限大
NaN 非数
1.5 MATLAB中的运算符和特殊字符说明符号
符号用途说明
+ 加
- 减
.* 点乘 详细说明help arith
* 矩阵相乘
^ 矩阵求幂
.^ 点幂
\ 左除 详细说明help slash
/ 右除
.\ 点左除
./ 点右除
kron 张量积 详细说明help kron
, 作分隔用,如把矩阵元素、向量参数、函数参数、几个表达式分隔开来
; (a)写在一个表达式后面时,运算后命令窗口中不显示表达式的计算结果
(b)在创建矩阵的语句中指示一行元素的结束,例如m=[x y z;i j k]
: (a)创建向量的表达式分隔符,如x=a:b:c
(b)a(:,j)表示j列的所有行元素;a(i,:)表示i行的所有列元素;a(1:3,4)表示第四列的第1行至第3行元素
() 圆括号
〔〕 创建数组、向量、矩阵或字符串(字母型)
{} 创建单元矩阵(cell array)或结构(struct)
% 注释符,特别当编写自定义函数文件时,紧跟function后的注释语句,在你使用help函数名时会显示出来。
' (a)定义字符串用
(b)向量或矩阵的共轭转置符
.' 一般转置符
... 表示MATLAB表达式继续到下一行,增强代码可读性
= 赋值符号
== 等于关系运算符
<,> 小于,大于关系运算符 详细说明help relop
& 逻辑与
| 逻辑或
~ 逻辑非
xor 逻辑异或
参考资料:http://..com/question/3476662.html?fr=qrl3