当前位置:首页 » 编程软件 » c与matlab混合编程

c与matlab混合编程

发布时间: 2022-08-03 05:09:29

‘壹’ matlab与c 混合编程 大概可提速多少倍

我做图像处理的时候,先是用MATLAB,因为有大量的循环处理,其运行时间将近一分钟,后来改用MATLAB与C混合,时间缩短至0.09秒,时间之差,真的是不可估量。

但是,情况不完全如此,MATLAB优点在于矩阵运算中,如果你的程序中有大量的矩阵运算,那么混合编程个人不是很建议;c语言优点在于循环速度很快。

我也有这样的经历,我的算法中有大量的矩阵运算(由于我是做图像处理,矩阵基本上是512*512的),本来用MATLAB编程用了9秒左右的时间,但是改用了C混合后,N长时间,反正我是等了将近一分钟,混合程序我是检验过的,没有死循环的。

以上这些完全个人经验之谈,希望对您有个帮助。

‘贰’ matlab与c混合编程,engOpen()的问题,matlab引擎启动不了

使用engOpen()打开Matlab引擎总是失败,问题可能就是Matlab组件没有注册。注册方法:点击开始/运行/cmd,在命令行提示窗口下更改到Matlab安装路径/bin,运行指令
matlab/regserver,注册成功后会弹出Matlab 命令窗口。

‘叁’ matlab和c语言怎么混合编程相关书籍

MATLAB是一个功能强大的数学软件,擅长于用矩阵运算完成各种数学功能。
但是其程序需要在MATLAB环境下解释执行,效率不高。
如果能将它强大的函数库用于C语言,利用C来编译执行,MATLAB将能发挥更大的作用。

‘肆’ C和matlab混合编程,mxCreateDoubleMatrix该函数申请内存失败,返回0x00000000

代码贴上来看一下?是不是你申请的矩阵太大了?最好用C 先申请一下矩阵,测试内存大小。如果成功,销毁矩阵,用Matlab申请矩阵;不成功,则重新想办法。

‘伍’ matlab与c(注意不是c++) 混合编程 error LNK2019: 无法解析的外部符号

遇到这种错误只有一种可能
就是有声明 但没有具体的实现

‘陆’ 如何将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");
}

‘柒’ 想用C和matlab混合编程进行神经网络训练,如何脱离matlab环境,matcom能调用sim函数吗谢了!大神

sim函数我建议你直接写成下面这个,不然混合编程的时候很可能用不了。

%计算S1与S2层的输出
A1=tansig(W1*p,B1);
A2=purelin(W2*A1,B2);

‘捌’ vc matlab 混合编程,哪种方式最好

调用matlab引擎:是要求MATLAB作为VC的一个后台来调用,从本质来说还是在MATLAB中运行的程序;
基于matcom:可以脱离MATLAB的环境,但是貌似有一部分MATLBA中的函数不能完全调用;而且方法简单;
基于COM的:这个我不太会也没有试过;
我推荐将MATLAB的程序编译成动态库在VC中调用,这也可以完全脱离MATLAB的环境,可以完美调用

‘玖’ c语言与matlab混合编程怎么生成m文件

通过matcom混合编程。

首先把matlab语言转换成dll,可以在c里面调用。

当然,新版本的matlab可以把m语言直接转换成标准c

热点内容
天然贝壳怎么存储 发布:2024-05-11 03:12:44 浏览:392
禁止tiktok算法出口 发布:2024-05-11 02:50:15 浏览:468
安卓开发的软件如何联网 发布:2024-05-11 02:45:21 浏览:585
李欣编译以预算构建确定性 发布:2024-05-11 02:40:43 浏览:827
判断图片上传格式 发布:2024-05-11 02:40:26 浏览:13
存储测试专家 发布:2024-05-11 02:26:59 浏览:532
压缩先生个性 发布:2024-05-11 02:00:24 浏览:319
c语言进程编程 发布:2024-05-11 01:58:38 浏览:437
24寸密码箱能装多少东西 发布:2024-05-11 01:13:07 浏览:326
怎么看自己的电脑配置的参数 发布:2024-05-11 01:08:45 浏览:811