精华内容
下载资源
问答
  • vc调用matlab

    2012-07-04 15:16:40
    vc调用matlab源代码,适合初学者参考
  • VC调用Matlab

    2010-05-25 10:47:09
    针对VC调用Matlab三种常用方法详细介绍,并分析各种方法的优缺点.
  • VC调用MATLAB

    2014-04-09 19:09:16
    马上就要下班了,写下今天的收获 ...VC调用Matlab的方法主要有两种,一种是我刚才说的把matlab的程序封装成dll,这样通用性较强,而且比较方便。另一种是把matlab作为一个服务器,vc当客户端,把数据传给服务器
    
    

    VC调用Matlab的方法主要有两种,一种是我刚才说的把matlab的程序封装成dll,这样通用性较强,而且比较方便。另一种是把matlab作为一个服务器,vc当客户端,把数据传给服务器,经matlab处理后,再把结果传递给VC。这两种方法的区别我还没有总结,等过几天把第二种方法介绍之后再一并总结。
    第一种方法如下(我坦白,是抄别人的,经过自己的修改了)

    1.当然是先建立matlab的m文件。

    我在matlab中定义了一个函数, 其m文件如下:

    function re=add(C)
    N=73;alpha=(0.2)*(pi/2);
    Ts=sqrt(2*pi/N); t=-(N-1)/2:(N-1)/2; t=t'; t=t*Ts;
    variance=pi; hh=zeros(N); hh(:,1)=1; hh(:,2)=2*t;
    for k=3:N;%k阶数
    hh(:,k)=hh(:,k-1).*t*2-2*(k-2)*hh(:,k-2); %计算n阶hermite函数的表达式,t自变量
    end
    HH(:,1)=1/sqrt(sqrt(variance))*hh(:,1).*exp(-t.*t/2);
    for k=2:N;
    HH(:,k)=exp(-t.*t/2).*hh(:,k)/sqrt(2.^(k-1)* factorial(k-1)*sqrt(variance));
    end
    if mod(N,2)==1;
    W=0:N-1; k=exp(-i*alpha*W/1.6); D=diag(k);
    else
    W=0:N-2; W=cat(2,W,[N]); k=exp(-i*alpha*W/1.6); D=diag(k);
    end
    FF=Ts*HH*D*HH';
    Z=C';
    X=FF*Z;
    re=real(X);
    end

    保存为add.m

    2.下面来对matlab编译环境进行设置。打开matlab,在命令行状态下键入:

    mex-setup

    然后出现如下提示:

    Select a compiler:

     [1] Borland C++Builder version 5.0 in C:Program FilesBorland

     [2] Lcc C version 2.4 in F:SOFTSHAREMATLAB65syslcc

     [3] Microsoft Visual C/C++ version 6.0 in C:Program FilesMicrosoft Visual Studio

     [0] None

    Compiler:

    这里我们选择’3’。(如果使用其他的编译器比如BCB,那么就可以相应的选择’1’)

    然后,继续在命令行状态下输入:

    mbuild –setup

    Please choose your compiler for building standalone MATLAB applications: 

    Would you like mbuild to locate installed compilers [y]/n? y

    Select a compiler:

     [1] Borland C++Builder version 5.0 in C:Program FilesBorland

     [2] Lcc C version 2.4 in F:SOFTSHAREMATLAB65syslcc

     [3] Microsoft Visual C/C++ version 6.0 in C:Program FilesMicrosoft Visual Studio

     [0] None

    Compiler:

    这里需要几步确认。大家按情况操作即可。

    3.对VC的编译器环境进行设置。在Tools-options-directory里面设置include和lib的路径,分别添加一项,指向matlab安装目录中的externinclude和 externlibwin32digitaldf50

    (我这里用的是matlab6.5,安装目录为C:MATLAB6p5,版本或安装路径不一样的请自行修改)

    4.这一步比较关键。在这一步中,将matlab中的.m文件转换为dll。

    在matlab命令行中输入:

    mcc -t -h -L C -W lib:ppp -T link:lib add.m

    其中add.m就是你刚才保存的m文件名字,ppp是要生成的链接库的文件名,随便起的

    至此,可以发现在add.m所在的目录中产生了一大堆文件。我们只用其中3个:

    ppp.h    ppp.lib     ppp.dll

    5.新建一个VC工程。将上面这3个文件拷贝到VC工程所在的目录中,以便VC调用之。

    6.进行VC编程。

    首先,在cpp文件中加入:  #include “ppp.h”

    然后,设置VC的链接库。在project-settings-link下的object/library modules中加入:

    ppp.lib libmx.lib libmatlb.lib libmmfile.lib()

    至此,VC的编译环境设置完毕。下面就是编程部分了。

    7.编程部分的关键:接口和数据类型的转换

    先给出VC实现的源代码:         

    /************************************************************************/
    /*
    Description: 一维FRFT变换,
    param: t为输入的数组
      dimension维数
    Note:DO NOT forget to release the memory of "t"
                                                                         */
    /************************************************************************/
    void CTestmatlabDoc::FRFT1D(double *t,int dimension)
    {
     if(dimension%2 == 0)
     {
      AfxMessageBox("不是奇数");
      return;
     }
     double * md = NULL;
     DWORD begintime = timeGetTime();
     //调用matlab创建2个矩阵
     mxArray *A=mclGetUninitializedArray();
     mxArray *C=mclGetUninitializedArray();
     //将C语言中的变量值赋给matlab中的矩阵
     mlfAssign(&A,mlfDoubleMatrix(1,dimension,t,NULL));
        mlfAssign(&C,mlfAdd(A));
     //将matlab中的矩阵的指针传递给C语言中的指向double的指针
     md=mxGetPr(C);
     memcpy(t,md,dimension*sizeof(double));
     //释放这些矩阵
     mxDestroyArray(A);
     mxDestroyArray(C);

    }

    相信看到里面的注释,我们就明白的差不多了。

    大家可以看出来,在进行调用的时候,我们使用的是m文件的文件名add生成的函数mlfAdd,而不是m文件中定义的add

    展开全文
  • VC 调用MATLAB

    2009-01-16 15:59:48
    VC环境 调用MATLAB库函数的环境设置和简单例子,可以对调用matlab库函数等有启发。呵呵
  • vc 调用 matlab

    2014-06-30 10:15:16
    里面内含 matalb的m文件 可以直接运行,有两个例子,一个是简单的加法 ,另一个是输入输出矩阵。
  • (用)VC调用matlab engine示例(用)VC调用matlab engine示例/VC源代码(用)VC调用matlab engine示例/VC源代码/ReadMe.txt(用)VC调用matlab engine示例/VC源代码/resource.h(用)VC调用matlab engine示例/VC源代码/StdAfx...

    (用)VC调用matlab engine示例

    (用)VC调用matlab engine示例/VC源代码

    (用)VC调用matlab engine示例/VC源代码/ReadMe.txt

    (用)VC调用matlab engine示例/VC源代码/resource.h

    (用)VC调用matlab engine示例/VC源代码/StdAfx.cpp

    (用)VC调用matlab engine示例/VC源代码/StdAfx.h

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.aps

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.clw

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.cpp

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.dsp

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.dsw

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.h

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.rc

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engineDlg.cpp

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engineDlg.h

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.ncb

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.plg

    (用)VC调用matlab engine示例/VC源代码/vc_matlab_engine.opt

    (用)VC调用matlab engine示例/VC源代码/Release

    (用)VC调用matlab engine示例/VC源代码/Release/vc_matlab_engine.exe

    (用)VC调用matlab engine示例/VC源代码/res

    (用)VC调用matlab engine示例/VC源代码/res/vc_matlab_engine.ico

    (用)VC调用matlab engine示例/VC源代码/res/vc_matlab_engine.rc2

    (用)VC调用matlab engine示例/VC源代码/Debug

    (用)VC调用matlab engine示例/VC源代码/Debug/vc_matlab_engine.res

    (用)VC调用matlab engine示例/VC源代码/Debug/vc60.idb

    (用)VC调用matlab engine示例/VC源代码/Debug/vc60.pdb

    (用)VC调用matlab engine示例/VC源代码/Debug/vc_matlab_engine.pch

    (用)VC调用matlab engine示例/VC源代码/Debug/StdAfx.obj

    (用)VC调用matlab engine示例/VC源代码/Debug/vc_matlab_engineDlg.obj

    (用)VC调用matlab engine示例/VC源代码/Debug/vc_matlab_engine.obj

    (用)VC调用matlab engine示例/VC源代码/Debug/vc_matlab_engine.ilk

    (用)VC调用matlab engine示例/VC源代码/Debug/vc_matlab_engine.exe

    (用)VC调用matlab engine示例/VC源代码/Debug/vc_matlab_engine.pdb

    (用)VC调用matlab engine示例/讲解文档

    (用)VC调用matlab engine示例/讲解文档/一步步学如何使用VC调用matlab engine编程.doc

    www.dssz.com.txt

    展开全文
  • vc 调用matlab

    2019-09-03 14:41:24
    转 https://www.cnblogs.com/renhang888/archive/2012/05/29/2524779.html https://www.cnblogs.com/nktblog/archive/2012/04/07/2435624.html
    展开全文
  • vc调用matlab问题

    2013-07-24 09:40:19
    VC调用MATLAB的方法研究 vc调用matlab问题解决
  • MATLAB与VC-利用VC 调用matlab数学库和图形库的.rar 上传MATLAB与VC的接口设计,及在利用VC调用MATLAB的一些资料,希望对大家有用!
  • vc调用MATLAB设置

    2010-07-17 18:06:31
    vc调用MATLAB设置 利用MATLAB的图形方便的显示c Code结果
  • VC调用MATLAB的方法研究
  • MATLAB在LabVIEW开发虚拟仪器中的应用研究pdf-VC调用MATLAB的方法.pdf VC调用MATLAB的方法.pdf
  • vc调用matlab编译器生成dll示例2
  • vc调用matlab的com组件示例2
  • vc调用matlab编译器生成dll示例3
  • vc调用matlab编译器生成dll示例1
  • vc调用matlab的com组件示例1
  • vc调用matlab编译器生成sharelibrary示例2 将matlab的输出画面copy到vc的exe界面上。
  • VC调用matlab程序小结

    2012-06-26 16:14:22
    VC调用matlab技术,很好的程序,简单实用!
  • VC调用MATLAB的方法

    2010-01-15 17:47:29
    VC调用MATLAB的方法,一篇有效帮助初学者的文章。
  • 详细介绍了vc调用matlab的几种方法,并给出了相应的步骤····
  • Vc调用matlab导出的dll,实现vc与matlab混合编程

    千次阅读 多人点赞 2012-07-21 16:10:16
    Vc调用matlab导出的dll,实现vc与matlab混合编程  写这篇博客的目的就是想把前段时间的工作交接下,让后来人接手这个项目的人迅速的入门。文章虽短,在项目初期可是搜刮了很多资料花了不少的时间。  为了与...

    Vc调用matlab导出的dll,实现vcmatlab混合编程

         写这篇博客的目的就是想把前段时间的工作交接下,让后来人接手这个项目的人迅速的入门。文章虽短,在项目初期可是搜刮了很多资料花了不少的时间。

         为了与win7兼容,matlab应该安装2010a2010bMatlab7导出的dllwin7下的vc2010中不兼容。

    1:首先为matlab选择编译器

        在命名行窗口输入:mex -setup          按照提示选择vc2010

    2:选择builder

        输入:mbuilder -setup                 同样选择vc2010

    3:将使用matlab写成的代码封装成函数,确认无错后开始生成dll

        在命令行输入:mcc -W cpplib:h_single -T link:lib h_single.m

      其中h_single是要导出的dll名称,h_single.mmatlab源文件。

    不同版本的matlab生成dll的时间不一样,不知道我使用的matlab2012a为什么这么慢。

       如果一切顺利,那么在.m文件目录下将会产生.lib.dll.h.cpp,.ctf(matlab2010好像不再生成.ctf文件)等几个文件。我们需要使用.libdll.h文件。

    dll生成后,剩下的就是在vc中调用了。这跟使用其他dll是一样的。首先要包含dll头文件,除了要将本次生成的.lib文件填入:链接器-》输入内。还需要加入mclmcr.lib  mclmcrrt.lib。最后将dll文件放在可执行文件目录下。matlab2010好像不再生成.ctf文件,因此不需要将ctf文件放在当前目录下,而在matlab7中却需要。   

    这些都只是准备工作,包含了头文件才能在vc内使用。传入matlab函数的数据是有一定格式的。因此需要将数据准备下,准备好之后传给matlab计算函数。至于传入的数据格式,可以参照我写过的代码,很简单。我也做了详尽的注释。

    上面只是把整个过程简单的介绍一遍,如果有其他问题可以参考我的其他博文。包括具体编译器的设置,出现过的错误及解决方案。所有这些都在vcmatlab混合编程目录下http://blog.csdn.net/ithzhang/article/category/1120011

    示例代码,注意传给dll导出函数的参数的类型:

    #include"stdafx.h"
    #include"myh_single.h"
    #include"h_single.h"
    
    /************************************************************************/
    /*  single_cal函数。单回路水平排列。                                          */
    /*   BY:   ithzhang ithzhang@foxmail.com                                     */
    /*   date:   2012年4月11日 11:32                                         */
    /*   modify date:2012年4月12日19:47  改正matlab 生成的dll库无法多次被调用的bug*/
    /*                                                                      */ 
    /* current:电流,p:3*2数组,  坐标                                         */
    /* delta:步长,left:坐标系左起始点,right:坐标系右结束点, xy:传出,:         */
    /* 综合磁场强度数组。x:传出:水平磁场强度数组,y:垂直磁场强度数组。                 */
    /* 三数组长度均为:(right-left)/delta +1                                   */
    /*                                                                      */ 
    /************************************************************************/
    
    
    
    
    
    bool h_single_cal(double current,double coordinate[3][2],double delta,
    	double left,double right,double Height,double *(&xy),double *(&x),double *(&y))
    {
    	static bool IsInitialzied=false;
    	/************************************************************************/
    	/* 初始化h_single库,仅能初始化一次,否则将会出现各种错误   初始化时间很长         */
    	/************************************************************************/
    	if(IsInitialzied==false)
    	{
    		if(!h_singleInitialize())
    			return false;
    		IsInitialzied=true;
    	}
    
    	/************************************************************************/
    	/* 定义mwArray类型的各个变量,传入matlab导出的h_single函数。                   */
    	/************************************************************************/
    	mwArray ii   (1,1,mxDOUBLE_CLASS);
    	mwArray p    (3,2,mxDOUBLE_CLASS);
    	mwArray step (1,1,mxDOUBLE_CLASS);
    	mwArray s1   (1,1,mxDOUBLE_CLASS);
    	mwArray s2   (1,1,mxDOUBLE_CLASS);
    	mwArray H    (1,1,mxDOUBLE_CLASS);
    	int num = (right-left) / delta;
    	num++;//不要忘了加1哦。
    
    	mwArray	B_m(1,num,mxDOUBLE_CLASS);
    	mwArray	B_x(1,num,mxDOUBLE_CLASS);
    	mwArray	B_y(1,num,mxDOUBLE_CLASS);
    
    	ii(1,1)   = current;
    	step(1,1) = delta;
    	s1(1,1)   = left;
    	s2(1,1)   = right;
    	H(1,1)    = Height;
    	for(int i = 0;i < 3; i++)
    	{
    		for(int j = 0;j < 2; j++)
    		{
    			p(i + 1,j + 1) = coordinate[i][j];
    		}
    	}
    	
    	/************************************************************************/
    	/* 调用matlab导出的h_single函数。h_single( 传出参数个数,传出参数,各个传入参数) */
    	/************************************************************************/
    
    	h_single(3,B_m,B_x,B_y,ii,p,step,s1,s2,H);
    
    
    	/************************************************************************/
    	/* 为传入指针申请内存空间,存储从h_single返回的结果。注意xy,x,y传入时是引用类型的指针*/
    	/* 在外部使用后,要注意释放这里申请的堆空间,否则将会导致内存泄露。                 */ 
    	/************************************************************************/
    	xy = new double[num];
    	x=new double[num];
    	y=new double [num];
    
    	/************************************************************************/
    	/* 从MxArray类型的返回值中得到数据。                                         */
    	/************************************************************************/
    	B_m.GetData(xy,num);
    	B_x.GetData(x,num);
    	B_y.GetData(y,num);
    	
    
    	/************************************************************************/
    	/* 执行成功返回true。                                                      */
    	/************************************************************************/
    	return true;
    
    }


    展开全文
  • maltab基础-基于COM的VC调用Matlab的方法及实现.pdf 附件里有
  • 步步学如何使用VC调用matlab engine编程 VC MATLAB 混合编程
  • VC与其它高级语言相比具有很高的编译效率,但在诸如图形、图像处理一类的应用中,当程序中...研究与实践表明:采用VC调用MATLAB的方法简化了编程步骤,不仅降低了编程难度,也较好的发挥了VC与MATLAB软件平台的整体优势。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 623
精华内容 249
关键字:

vc调用matlab

matlab 订阅