
可以用MATLAB提供的一些基本对话框函数显示,例如: str={'i am a student''', 'can i help you'';', 'i like lessons'''};helpdlg(str)
通常在实现图像处理的算法时我们使用Matlab编程,因为它具有丰富的库函数以及 *** 作方便,然而在工程项目中通常使用C/C++语言。如果我们将matlab代码完全重写成C++代码会很麻烦,最好的办法是借助matlab与C/C++接口将m程序转成dll文件!
一、使用matlab将m转成dll文件
1、在命令行中输入mex -setup
提示你是否要在本地安装matlab compilers,然后选择compiler类型,有matlab自带的编辑器以及检测到的其他编辑器,比如“Microsoft Visual C/C++ version 60 in E:\Program Files\Microsoft Visual Studio”,根据自己实际情况选择。
2、在命令行中输入mbuild -setup
这里的选项和上面类似,依次选择环境确定。
3、生成dll文件
一句命令mcc -W cpplib:add -T link:lib addm
前面的add表示生成的dll文件名,后面的addm顾名思义是m文件名。生成后会多出8个文件,有用的是addctfadddll addlib addh4个文件,据说新版的Matlab不会生成ctf文件。
二、VC60中调用生成的dll文件
上面生成的dll文件,我们可以借助VC60的Depends工具查看导出函数名,但是我们要调用导出函数必须要知道函数的形参返回类型等,这里要借助h文件,它包含了导出函数的声明,下面以实例来讲解使用方法:
1、addm文件
function [a,b]=add(x,y)
a=2x+y;
b=3y;
end
注意了add函数有两个返回值,可以猜测一下在C++中是如何处理的;
2、addh文件
截取其中一段关键代码如下:
extern void add(int nargout, mwArray& a, mwArray& b
, const mwArray& x, const mwArray& y);
实际上函数的返回是变相的放到形参中的,依次是输出参数个数,输出参数,输入参数。PS 现在做的这个项目中用户自定义算法dll使用的规则和这里类似!
3、C++中调用dll文件
(1)新建空工程,将上面提及的4个文件放到工程目录下;
(2)VC++目录中包含目录:matlab 内的include目录
比如我的是 E:\MATLAB7\extern\include
(3)VC++目录中库目录:matlab 内的lib目录
E:\MATLAB7\extern\lib\win32\microsoft\msvc60,要根据VC++版本修改!
(4)工程属性-》连接-》输入-》附加依赖项
输入:addlib mclmcrrtlib mclmcrlib,第一个是生成的。或者在预处理中加入下面代码
#pragma comment(lib, "mclmcrrtlib")
#pragma comment(lib, "mclmcrlib")
#pragma comment(lib, "addlib")
4、C++代码
#include <iostream>
#include "addh"
using namespace std;
int main()
{
if(!addInitialize())
{
cout<<"initilize failed!!!"<<endl;
return -1;
}
mwArray a(1,1,mxDOUBLE_CLASS);
mwArray b(1,1,mxDOUBLE_CLASS);
a(1,1)=20;
b(1,1)=30;
mwArray x(1,1,mxDOUBLE_CLASS);
mwArray y(1,1,mxDOUBLE_CLASS);
//输出参数个数,输出参数,输入参数。
add(2,x,y,a,b);
double i=new double;
double j=new double ;
xGetData(i,1);
yGetData(j,1);
cout<<"x="<<i<<" y="<<j<<endl;
getchar();
return 0;
}
注意:addInitialize()一定要!
必须有函数文件存在时,才能调用其文件(子程序)。如
先建立函数文件 myfunm
function s=myfun(m) %function是myfun
s=0;
for n=1:m
s=s+1/n/n
end
然后在指令窗口或执行文件中调用
myfun(10)
myfun(50)
弱弱的问一句
同学接触Matlab多久了随便找一个工具箱的Demo都是演示多个文件的啊
只是单纯的函数调用而已
跟有多少个没有关系啊在一个m文件的里面
根据需要
调用各个文件获得计算结果
进行相关 *** 作
% 添加当前路径下的所有子目录
addpath(genpath(pwd));
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持
以上就是关于MATLAB命令行窗口不能显示所有的程序运行结果,该怎么找到全部的内容,包括:MATLAB命令行窗口不能显示所有的程序运行结果,该怎么找到、c++调用matlab的程序,想将matlab的m文件生成dll调用,但是matlab程序有好多m文件,怎么办、matlab中如何用主程序调用子程序形式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)