精通VC与Matlab联合编程(六)

2016-01-29 12:27 34 1 收藏

精通VC与Matlab联合编程(六),精通VC与Matlab联合编程(六)

【 tulaoshi.com - C语言心得技巧 】

精通VC与Matlab联合编程(六)

作者:邓科

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载源代码

浅析VC与MATLAB联合编程<一
浅析VC与MATLAB联合编程<二
浅析VC与MATLAB联合编程<三
浅析VC与MATLAB联合编程<四
浅析VC与MATLAB联合编程<五

  Matlab CC++函数库是Matlab扩展功能重要的组成部分,包含了大量的用CC++语言重新编写的Matlab函数,主要包括初等数学函数、线形代数函数、矩阵操作函数、数值计算函数、特殊数学函数、多项式函数、插值函数等,用户可以在自己的CC++程序中调用这些函数,实现复杂的矩阵计算功能,从而减少程序设计工作量,需要说明的是C函数库和C++函数库是两个不同的函数库。
在使用前需要进行安装:
在Matlab命令窗口中输入:
mbuild -setup
按照提示选择VC的编译器,完成后在Matlab命令窗口中输入:
mex -setup
同样选择VC的编译器,就完成编译器的安装和配置。
首先介绍下C函数库,C数学函数库所需要的库函数在该目录下:Matlab根目录:externlib
下面来看matlab自带的一个使用C函数库的例子(所有使用c函数例子在:matlab根目录externexamplescmath):

 * ex1.c * * Copyright (c) 1995-1999 by The Mathworks, Inc. All Rights Reserved. */ /* $Revision: 1.6 $ */ #include <stdio.h#include <stdlib.h     /* used for EXIT_SUCCESS */#include <string.h#include "matlab.h"/*matlab.h为C数学函数库的头文件static double real_data[] = { 1, 2, 3, 4, 5, 6 };static double cplx_data[] = { 7, 8, 9, 10, 11, 12 };int main(){    /* 声明两个mxArray矩阵变量并赋初值为NULL */    mxArray *mat0 = NULL;    mxArray *mat1 = NULL;    /* 使用自动内存管理*/    mlfEnterNewContext(0, 0);    /* 创建矩阵mat0,mat1并赋值 */    mlfAssign(&mat0, mlfDoubleMatrix(2, 3, real_data, NULL));/*该矩阵为2*3矩阵    mlfAssign(&mat1, mlfDoubleMatrix(3, 2, real_data, cplx_data));/*该矩阵为2*3矩阵,并为复数矩阵    /* 打印矩阵 */    mlfPrintMatrix(mat0);    mlfPrintMatrix(mat1);    /* 释放矩阵所占的内存*/    mxDestroyArray(mat0);    mxDestroyArray(mat1);    /* 禁用自动内存管理*/    mlfRestorePreviousContext(0, 0);    return(EXIT_SUCCESS);}
三、如果有图像,请在图像文件中表明图像索引编号,如“myappimg1.gif”,“myappimg2.gif”等,在图像显示的下方注明图像描述:


图一 程序运行结果

下面在VC中实现该程序的功能,步骤如下:
1、在VC中打开ex1.c文件(该文件在该目录下:matlab根目录externexamplescmath)
2、设置头文件和库文件路径:工具->选择,目录
在inlude选项中添加如下路径:
D:matlabexternincludecpp
D:matlabexterninclude
结果如图2:


图二 头文件路径设置

在Library选项中添加如下路径:如图三D:matlabexternlibwin32microsoftmsvc60D:matlabexternlibD:matlabbin

图三 库文件路径设置

3、添加库文件:工程->设置->Link在General选项中的“对象库/模块”中将目录D:matlabexternlibwin32microsoftmsvc60目录下的所有库文件名写上:如图四


图四 库文件添加

  所有设置完成后就可以运行了。Matlab内建函数库包括Matlab C数学函数中最基本的数学函数,任何使用C数学函数库编写的应用程序必须使用Matlab内建函数。Matlab M文件函数库包含了从M文件转换来的函数,这些函数相比内建函数其内容更加丰富,并且包含了大量特殊功能函数在Matlab C函数库中,Matlab阵列被声明为mxArray的结构体,该结构体的定义在目录Matlabexternincludematrix.h文件中,很好的理解mxArray结构体有助于使用Matlab C数学库。
Matlab C内建数学库常用的函数有:通用功能函数;运算符和特殊矩阵;基本的矩阵操作函数初等数学函数线形代数函数数据分析和傅立叶转换函数字符串函数文件输入输出函数常用数据类型函数Matlab M文件函数库运算和特殊功能功能函数基本的矩
                        

来源:http://www.tulaoshi.com/n/20160129/1486125.html

延伸阅读
首先必须初始化网络,可以在app的InitInstance()中用AfxSocketInit()或者直接用 WSAStartup( MAKEWORD(1,1),&wsaData) WORD wVersionRequested WSADATA 初始化 winsock WSACleanUp 然后是初始化套接字的方法,有tcp和udp两种tcp下: SOCKET(AF_INET,SOCK_STREAM,0) bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));//同下面的代...
一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OsVersionInf...
1. 如何提取部分网页数据 a. 使用IHTMLDocument2的getElementByTagName,不过你需要IWebBrowser2这个组件来加载网页 b. IXMLHTTPRequest读取网页数据,存入CString,再根据标查找 2. 我需要在固定时间提取网页上的相关信息. 例如:今日油假:4.90元/升 IWebBrowse2 得到IHTMLDocument2指针, IHTMLDocument2指针得到IHTMLElementCollection, ...
首先建议读者明白网络、IP地址、协议等概念。应用层协议TeLnet,FTP,HTTP,DNS,SMTP,POP3等。传输层协议TCP(面向连接、可靠),UDP(无连接不可靠)。UDP实时性好,故广泛使用.网络层协议IP,ICMP(互联网控制报文协议),IGMP(Internet组管理协议). 数据封装:每一层都会加上自己的信息头或者称为协议头.有的层也会加入尾部.传输可以看成为一个在发送端...
1. 显示和隐藏标题栏 方法一:使用API实现 //隐藏TitleBar LONG lStyle = ::GetWindowLong(this-m_hWnd, GWL_STYLE); ::SetWindowLong(this-m_hWnd, GWL_STYLE, lStyle & ~WS_CAPTION); ::SetWindowPos(this-m_hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAM...

经验教程

967

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部