Matlab C\C++函數庫是Matlab擴展功能重要的組成部分,包含了大量的用C\C++語言重新編寫的Matlab函數,主要包括初等數學函數、線形代數函數、矩陣操作函數、數值計算函數、特殊數學函數、多項式函數、插值函數等,用戶可以在自己的C\C++程序中調用這些函數,實現復雜的矩陣計算功能,從而減少程序設計工作量,需要說明的是C函數庫和C++函數庫是兩個不同的函數庫。
在使用前需要進行安裝:
在Matlab命令窗口中輸入:
mbuild -setup
按照提示選擇VC的編譯器,完成後在Matlab命令窗口中輸入:
mex -setup
同樣選擇VC的編譯器,就完成編譯器的安裝和配置。
首先介紹下C函數庫,C數學函數庫所需要的庫函數在該目錄下:Matlab根目錄:\extern\lib
下面來看matlab自帶的一個使用C函數庫的例子(所有使用c函數例子在:matlab根目錄\extern\examples\cmath):* 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根目錄\extern\examples\cmath)
2、設置頭文件和庫文件路徑:工具->選擇,目錄
在inlude選項中添加如下路徑:
D:\matlab\extern\include\cpp
D:\matlab\extern\include
結果如圖2:
圖二 頭文件路徑設置
在Library選項中添加如下路徑:如圖三 D:\matlab\extern\lib\win32\microsoft\msvc60 D:\matlab\extern\lib D:\matlab\bin
圖三 庫文件路徑設置
3、添加庫文件:工程->設置->Link 在General選項中的“對象庫/模塊”中將目錄D:\matlab\extern\lib\win32\microsoft\msvc60目錄下的所有庫文件名寫上:如圖四
圖四 庫文件添加
所有設置完成後就可以運行了。 Matlab內建函數庫包括Matlab C數學函數中最基本的數學函數,任何使用C數學函數庫編寫的應用程序必須使用Matlab內建函數。Matlab M文件函數庫包含了從M文件轉換來的函數,這些函數相比內建函數其內容更加豐富,並且包含了大量特殊功能函數在Matlab C函數庫中,Matlab陣列被聲明為mxArray的結構體,該結構體的定義在目錄Matlab\extern\include\matrix.h文件中,很好的理解mxArray結構體有助於使用Matlab C數學庫。 Matlab C內建數學庫常用的函數有:
通用功能函數;
運算符和特殊矩陣;
基本的矩陣操作函數
初等數學函數
線形代數函數
數據分析和傅立葉轉換函數
字符串函數
文件輸入輸出函數
常用數據類型函數
Matlab M文件函數庫
運算和特殊功能功能函數
基本的矩陣操作函數
基本數學函數
特殊數學函數
線形代數函數
數值分析和傅立葉變換函數
多項式和插值函數
函數的函數和常微分方程
字符串函數
文件讀寫函數
數據類型函數
稀疏矩陣函數
以上函數的用法在Matlab幫助文擋中有介紹。與Matlab C函數庫類似,Matlab C++函數庫也包括Matlab C++內建數學庫和Matlab M文件函數庫,並在Matlab C函數庫的基礎上對許多函數進行了類封裝,使得C++語言可以利用重載、繼承等功能對C++庫函數進行調用。Matlab C++函數庫與Matlab C函數庫的區別在於Matlab C++函數庫用類定義數據結構,而Matlab C函數庫用結構體來定義數據結構。要說明的是:Matlab7.0版本不再使用C/C++函數庫,因此以上方法在7.0版本中使用會出現錯誤。
本文配套源碼