導航:首頁 > 編程語言 > matlab外部介面編程pdf

matlab外部介面編程pdf

發布時間:2022-11-30 03:46:45

⑴ 如何JSP系統中應用matlab外部程序介面(MATLAB Builder for java

加入java的目錄下的lib目錄下,然後把該jar文加入Java環境變數中如
CLASSPATH=$JAVA_HOME/lib/yourjarfile.jar
如果是linux可以編輯/etc/profile文件加進去
最後source /etc/profile使之生效就可以了...

⑵ MATLAB實用教程的內容簡介

《MATLAB實用教程》從快速入門和實用性兩個方面,對MATLAB7.0進行了詳細的介紹,並列舉了大量實用的例子。全書共分為12章,第1章介紹MATLAB的安裝及系統功能;第2~3章介紹MATLAB基於命令窗口的應用,講述了MATLAB的基礎知識和數學運算;第4~8章介紹MATLAB基於M文件的應用,講述了MATLAB的編程功能、數據顯示及存取功能、數值和符號計算功能、圖形用戶界面設計功能等;第9~10章從模塊化模擬的角度介紹MATLAB基於Simulink環境的應用,講述了MATLAB的包含S函數的Simulink環境基礎知識和在信號處理、圖像處理以及控制等領域的實際應用;第11章從信息和功能交互的角度介紹MATLAB的外部介面,講述了MATLAB與Word、Excel、C語言、Java語言等的介面;第12章提供對《MATLAB實用教程》內容加深理解的實驗。
《MATLAB實用教程》可作為電子、通信、自控等專業本科生的教材,同時也可作為相關專業研究生及廣大科研人員的參考用書。

⑶ 我對MATLAB面向對象編程很感興趣,請問哪位有《MATLAB面向對象編程——從入門到設計》電子版 謝謝了

這本書,我沒有,但是我又這些,有你有用的嗎?找找看!

MATLAB6工程計算及應用.txt
MATLAB與數學實驗(第2版).pdf
應用Web和MATLAB的信號與系統基礎(第二版).pdf
MATLAB 語言即學即會.PDF
MATLAB 電子模擬與應用33.PDF
MATLAB 神經網路工具箱函數.PDF
MATLAB 神經網路工具箱應用簡介.PDF
MATLAB 神經網路應用設計.PDF
MATLAB 程序設計.PDF
MATLAB 程序設計與實例應用.PDF
MATLAB 程序設計與應用3.PDF
MATLAB 程序設計教程.PDF
MATLAB 程序設計語言.PDF
MATLAB 程式設計與應用.PDF
MATLAB 符號數學工具箱應用簡介.PDF
MATLAB 語言與控制系統模擬.PDF
MATLAB 語言與數學建模.PDF
Matlab和Maple系統在力學教學中的應用.pdf
Matlab.programming.for.engineers.(2001).pdf
MATLAB.pdf
MATLAB5_x與科學計算.pdf
MATLAB6.0數學手冊.pdf
MATLAB 3.PDF
MATLAB 5.3精彩編程及高級應用.PDF
MATLAB 5.3精要、編程及高級應用.PDF
MATLAB 5.x入門與提高.pdf
MATLAB 5.X應用與技巧.PDF
MATLAB 5.X手冊.PDF
MATLAB 5.語言與程序設計.PDF
MATLAB 5_1實用指南.PDF
MATLAB 5_3學習教程.PDF
MATLAB 5_3實例教程.PDF
MATLAB 5_3實例詳解.PDF
MATLAB 5_3實用教程.PDF
MATLAB 5_3應用指南.PDF
MATLAB 5_3精要、編程及高級應用.PDF
MATLAB 5_X入門與應用.PDF
MATLAB 5_X工具箱使用技巧與實例.PDF
MATLAB 5_X應用與技巧.PDF
MATLAB 5_X程序設計語言.PDF
MATLAB 6 數學建模基礎教程.PDF
MATLAB 6.5輔助小波分析與應用.PDF
MATLAB 6_1基礎及應用技巧.PDF
MATLAB 6_1實用指南(上冊).PDF
MATLAB 6_1實用指南(下冊).PDF
MATLAB 6_1最新應用祥解.PDF
MATLAB 6_X圖像處理.PDF
MATLAB 6_X符號運算及其應用.PDF
MATLAB 6實例教程.PDF
MATLAB 6數學手冊.PDF
MATLAB 6時尚創作百例含1CD.PDF
MATLAB 6科學運算完整解決方案.PDF
MATLAB 7及工程問題解決方案.PDF
MATLAB 7實用指南(上冊).PDF
MATLAB 7實用指南(下冊).PDF
MATLAB 下的數字信號處理示例…….PDF
MATLAB 與SIMULINK工程應用.PDF
MATLAB 與外部程序介面.PDF
MATLAB 與數學實驗.PDF
MATLAB 與通信模擬.PDF
MATLAB 人工神經元網路小例子.PDF
MATLAB 模擬技術與應用.PDF
MATLAB 信號處理.PDF
MATLAB 信號處理詳解.PDF
MATLAB 偏微分方程工具箱應用簡介.PDF
MATLAB 原理與工程應用.PDF
MATLAB 及其在理工課程中的應用指南.PDF
MATLAB 及其在電路與控制理論中的應用.PDF
MATLAB 及在電子信息類課程中的應用.PDF
MATLAB 命令大全.PDF
MATLAB 圖像處理命令.PDF
MATLAB 圖形圖像.PDF
MATLAB 圖形技術——繪圖及圖形用戶介面.PDF
MATLAB 在工程數學上的應用.PDF
MATLAB 在理論力學教學中的應用.PDF
MATLAB 在電信工程中的應用.PDF
MATLAB 基礎及數學軟體.PDF
MATLAB 外部介面編程.PDF
MATLAB 實用教程.PDF
MATLAB 小波分析工具箱原理與應用.PDF
MATLAB 工具箱應用.PDF
MATLAB 工具箱應用指南:信息工程篇.PDF
MATLAB 工具箱應用指南:控制工程篇.PDF
MATLAB 工具箱應用指南——應用數學篇.PDF
MATLAB 工程數學.PDF
MATLAB 工程數學應用.PDF
MATLAB 工程數學解題指導.PDF
MATLAB 工程計算及應用.PDF
MATLAB 應用圖像處理.PDF
MATLAB 應用程序介面.PDF
MATLAB 應用程序介面用戶指南.PDF
MATLAB 擴展編程含盤.PDF
MATLAB 控制系統設計.PDF
MATLAB 教程.PDF
MATLAB 數值計算與編程.PDF
MATLAB 數據處理與應用.PDF
MATLAB 數理統計工具箱應用簡介.PDF
MATLAB 方法.PDF
MATLAB 模糊邏輯工具箱函數.PDF
MATLAB 模糊邏輯工具箱的分析與應用.PDF
MATLAB 電子模擬與應用.PDF
MATLAB 語言工具箱——TOOLBOX實用指南.PDF
MATLAB 語言應用系列書MATLAB 科學圖形構建基礎與應用(6_X).PDF
MATLAB 語言程序設計·MATLAB 語言程序設計:5_2版.PDF
MATLAB 語言程序設計教程.PDF
MATLAB 語言精要及動態模擬工具SIMULINK.PDF
MATLAB 進階(含SIMULINK).PDF
MATLAB 頻譜分析.PDF
MATLAB 高級編程.PDF
MATLAB 高級語言及其在控制系統中的應用.PDF
MATLAB與C_C++混合編程.PDF
MATLAB模擬應用詳解.pdf
MATLAB模擬應用詳解1.pdf
MATLAB及在電子信息課程中的應用 (第3版).pdf
MATLAB數學計算範例教程.pdf
MATLAB程序設計與應用……第一版.pdf
MATLAB程序設計與應用……第二版.pdf
MATLAB語言——演算紙式的科學工程計算語言.PDF
基於MATLAB 的系統分析與設計——時頻分析.PDF
基於MATLAB 6_X的系統分析與設計:神經網路.PDF
基於MATLAB 6_X的系統分析與設計:虛擬現實.PDF
基於MATLAB _SIMULINK的系統模擬技術與應用.PDF
基於MATLAB 的系統分析與設計:圖像處理.PDF
基於MATLAB 的系統分析與設計:模糊系統.PDF
基於MATLAB 的系統分析與設計——信號處理.PDF
基於MATLAB 的系統分析與設計——小波分析.PDF
基於MATLAB 的系統分析與設計——控制系統.PDF
精通MATLAB 綜合輔導與指南.PDF
精講多練MATLAB .PDF
精通MATLAB 5.PDF
精通MATLAB 5:綜合輔導與指南.PDF
精通MATLAB 6.PDF
《 MATLAB 5.2使用手冊 》.pdf

⑷ 《Matlab編程基礎》pdf下載在線閱讀全文,求百度網盤雲資源

《Matlab編程基礎》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1tlKSF0Own3u0W1cQ1_Rlfw

?pwd=i2oh 提取碼:i2oh
簡介:美國MathWorks公司出品的商業數學軟體,用於演算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和互動式環境,主要包括Matlab和Simulink兩大部分Matlab應用非常之廣泛

⑸ 怎麼在MATLAB中編寫程序,把simulink模擬出來的圖形用MATLAB實現

Simulink的命令行模擬方式:
[t,x,y]=sim('modelname')
利用對話框參數進行模擬,返回輸出矩陣;
[t,x,y]=sim('modelname', timespan, options, ut)
利用輸入參數進行模擬,返回輸出矩陣;
[t,x,y1,y2,...yn]=sim('modelname', timespan, options, ut)
利用輸入參數進行模擬,返回逐個輸出;
參數說明:
'modelname' 運行的模型名(不包含擴展名),必須在Matlab的搜索路徑上。
timespan 指定模擬的時間區間,可以採取以下幾種格式:
(1)[] 空,利用模型對話框設置時間;
(2)T_final 標量,制定終止模擬時間;
(3)[T_start T_final] 二元向量,指定模擬時間區間;
(4)outputTimes 任何指定輸出時間記錄點的向量。
options MATLAB特定的一種數據結構,具有最高優先權,可以覆蓋模型參數對話框中的設置。
ut 賦給模擬對象數入口模塊的量,具有最高優先設置,它是形為[t,u1,u2...]的數值矩陣,每個為時間序列或輸入序列。

⑹ 如何讓matlab用mex與C連接使用有例子 PDF

如果我有一個用C語言寫的函數,實現了一個功能,如一個簡單的函數:
double add(double x, double y)
{ return x + y; }

現在我想要在Matlab中使用它,比如輸入:

>> a = add(1.1, 2.2)
3.3000
要得出以上的結果,那應該怎樣做呢?
解決方法之一是要通過使用MEX文件,MEX文件使得調用C函數和調用Matlab的內置函數一樣方便。MEX文件是由原C代碼加上MEX文件專用的介面函數後編譯而成的。可以這樣理解,MEX文件實現了一種介面,它把在Matlab中調用函數時輸入的自變數通過特定的介面調入了C函數,得出的結果再通過該介面調回Matlab。該特定介面的操作,包含在mexFunction這個函數中,由使用者具體設定。
所以現在我們要寫一個包含add和mexFunction的C文件,Matlab調用函數,把函數中的自變數(如上例中的1.1和2.2)傳給 mexFunction的一個參數,mexFunction把該值傳給add,把得出的結果傳回給mexFunction的另一個參數,Matlab通過該參數來給出在Matlab語句中調用函數時的輸出值(如上例中的a)。
值得注意的是,mex文件是與平台有關的,以我的理解,mex文件就是另類的動態鏈接庫。在matlab6.5中使用mex -v 選項,你可以看到最後mex階段有類似如下的信息:
--> "del _lib94902.obj"
--> "del "test.exp""
--> "del "test.lib""
也就是說,雖然在matlab6.5生成的是dll文件,但是中間確實有過lib文件生成。
比如該C文件已寫好,名為add.c。那麼在Matlab中,輸入:
>> mex add.c
就能把add.c編譯為MEX文件(編譯器的設置使用指令mex -setup),在Windows中,MEX文件類型為mexw32,即現在我們得出add.mexw32文件。現在,我們就可以像調用M函數那樣調用 MEX文件,如上面說到的例子。所以,通過MEX文件,使用C函數就和使用M函數是一樣的了。
我們現在來說mexFunction怎樣寫。
mexFunction的定義為:
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{

}
可以看到,mexFunction是沒返回值的,它不是通過返回值把結果傳回Matlab的,而是通過對參數plhs的賦值。mexFunction的四個參數皆是說明Matlab調用MEX文件時的具體信息,如這樣調用函數時:
>> b = 1.1; c = 2.2;
>> a = add(b, c)
mexFunction四個參數的意思為:
nlhs = 1,說明調用語句左手面(lhs-left hand side)有一個變數,即a。
nrhs = 2,說明調用語句右手面(rhs-right hand side)有兩個自變數,即b和c。
plhs是一個數組,其內容為指針,該指針指向數據類型mxArray。因為現在左手面只有一個變數,即該數組只有一個指針,plhs[0]指向的結果會賦值給a。
prhs和plhs類似,因為右手面有兩個自變數,即該數組有兩個指針,prhs[0]指向了b,prhs[1]指向了c。要注意prhs是const的指針數組,即不能改變其指向內容。
因為Matlab最基本的單元為array,無論是什麼類型也好,如有double array、 cell array、 struct array……所以a,b,c都是array,b = 1.1便是一個1x1的double array。而在C語言中,Matlab的array使用mxArray類型來表示。所以就不難明白為什麼plhs和prhs都是指向mxArray類型的指針數組。
完整的add.c如下:
#include "mex.h" // 使用MEX文件必須包含的頭文件
// 執行具體工作的C函數
double add(double x, double y)
{
return x + y;
}
// MEX文件介面函數
void mexFunction(int nlhs,mxArray *plhs[], int nrhs,const mxArray *prhs[])
{
double *a;
double b, c;
plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
a = mxGetPr(plhs[0]);
b = *(mxGetPr(prhs[0]));
c = *(mxGetPr(prhs[1]));
*a = add(b, c);
}
mexFunction的內容是什麼意思呢?我們知道,如果這樣調用函數時:
>> output = add(1.1, 2.2);
在未涉及具體的計算時,output的值是未知的,是未賦值的。所以在具體的程序中,我們建立一個1x1的實double矩陣(使用 mxCreateDoubleMatrix函數,其返回指向剛建立的mxArray的指針),然後令plhs[0]指向它。接著令指針a指向plhs [0]所指向的mxArray的第一個元素(使用mxGetPr函數,返回指向mxArray的首元素的指針)。同樣地,我們把prhs[0]和prhs [1]所指向的元素(即1.1和2.2)取出來賦給b和c。於是我們可以把b和c作自變數傳給函數add,得出給果賦給指針a所指向的mxArray中的元素。因為a是指向plhs[0]所指向的mxArray的元素,所以最後作輸出時,plhs[0]所指向的mxArray賦值給output,則 output便是已計算好的結果了。
上面說的一大堆指向這指向那,什麼mxArray,初學者肯定都會被弄到頭暈眼花了。很抱歉,要搞清楚這些亂糟糟的關系,只有多看多練。
實際上mexFunction是沒有這么簡單的,我們要對用戶的輸入自變數的個數和類型進行測試,以確保輸入正確。如在add函數的例子中,用戶輸入char array便是一種錯誤了。
從上面的講述中我們總結出,MEX文件實現了一種介面,把C語言中的計算結果適當地返回給Matlab罷了。當我們已經有用C編寫的大型程序時,大可不必在 Matlab里重寫,只寫個介面,做成MEX文件就成了。另外,在Matlab程序中的部份計算瓶頸(如循環),可通過MEX文件用C語言實現,以提高計算速度。
以上是對mex文件的初步認識,下面詳細介紹如何用c語言編寫mex文件:

1 為什麼要用C語言編寫MEX文件
MATLAB是矩陣語言,是為向量和矩陣操作設計的,一般來說,如果運算可以用向量或矩陣實現,其運算速度是非常快的。但若運算中涉及到大量的循環處理,MATLAB的速度的令人難以忍受的。解決方法之一為,當必須使用for循環時,把它寫為MEX文件,這樣不必在每次運行循環中的語句時MATLAB都對它們進行解釋。
2 編譯器的安裝與配置
要使用MATLAB編譯器,用戶計算機上應用事先安裝與MATLAB適配的以下任何一種ANSI C/C++編譯器:
5.0、6.0版的MicroSoft Visual C++(MSVC)
5.0、5.2、5.3、5.4、5.5版的Borland C++
LCC(由MATLAB自帶,只能用來產生MEX文件)
下面是安裝與配置MATLAB編譯器應用程序MEX的設置的步驟:
(1)在MATLAB命令窗口中運行mex –setup,出現下列提示:
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n?

(2)選擇y,MATLAB將自動搜索計算機上已安裝的外部編譯器的類型、版本及所在路徑,並列出來讓用戶選擇:
Select a compiler:
[1] Borland C++Builder version 6.0 in C:\Program Files\Borland
[2] Digital Visual Fortran version 6.0 in C:\Program Files\Microsoft Visual Studio
[3] Lcc C version 2.4 in D:\MATLAB6P5P1\sys\lcc
[4] Microsoft Visual C/C++ version 6.0 in C:\Program Files\Microsoft Visual Studio
[0] None
Compiler:
(3)選擇其中一種(在這里選擇了3),MATLAB讓用戶進行確認:
Please verify your choices:
Compiler: Lcc C 2.4
Location: D:\MATLAB6P5P1\sys\lcc
Are these correct?([y]/n):

(4)選擇y,結束MATLAB編譯器的配置。
3 一個簡單的MEX文件例子
【例1】用m文件建立一個1000×1000的Hilbert矩陣。
tic
m=1000;
n=1000;
a=zeros(m,n);
for i=1:1000
for j=1:1000
a(i,j)=1/(i+j);
end
end
toc
在matlab中新建一個Matlab_1.cpp 文件並輸入以下程序:
#include "mex.h"
//計算過程
void hilb(double *y,int n)
{
int i,j;
for(i=0;i
for(j=0;j
*(y+j+i*n)=1/((double)i+(double)j+1);
}
//介面過程
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
double x,*y;
int n;

if (nrhs!=1)
mexErrMsgTxt("One inputs required.");
if (nlhs != 1)
mexErrMsgTxt("One output required.");
if (!mxIsDouble(prhs[0])||mxGetN(prhs[0])*mxGetM(prhs[0])!=1)
mexErrMsgTxt("Input must be scalars.");
x=mxGetScalar(prhs[0]);
plhs[0]=mxCreateDoubleMatrix(x,x,mxREAL);
n=mxGetM(plhs[0]);
y=mxGetPr(plhs[0]);
hilb(y,n);
}
該程序是一個C語言程序,它也實現了建立Hilbert矩陣的功能。在MATLAB命令窗口輸入以下命令:mex Matlab_1.cpp,即可編譯成功。進入該文件夾,會發現多了兩個文件:Matlab_1.asv和Matlab_1.dll,其中Matlab_1.dll即是MEX文件。運行下面程序:
tic
a=Matlab_1(1000);
toc
elapsed_time =
0.0470
由上面看出,同樣功能的MEX文件比m文件快得多。
4 MEX文件的組成與參數
MEX文件的源代碼一般由兩部分組成:
(1)計算過程。該過程包含了MEX文件實現計算功能的代碼,是標準的C語言子程序。
(2)入口過程。該過程提供計算過程與MATLAB之間的介面,以入口函數mxFunction實現。在該過程中,通常所做的工作是檢測輸入、輸出參數個數和類型的正確性,然後利用mx-函數得到MATLAB傳遞過來的變數(比如矩陣的維數、向量的地址等),傳遞給計算過程。
MEX文件的計算過程和入口過程也可以合並在一起。但不管那種情況,都要包含#include "mex.h",以保證入口點和介面過程的正確聲明。注意,入口過程的名稱必須是mexFunction,並且包含四個參數,即:
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
其中,參數nlhs和nrhs表示MATLAB在調用該MEX文件時等式左端和右端變數的個數,例如在MATLAB命令窗口中輸入以下命令:
[a,b,c]=Matlab_1(d,e,f,g)
則nlhs為3,nrhs為4。
MATLAB在調用MEX文件時,輸入和輸出參數保存在兩個mxArray*類型的指針數組中,分別為prhs[]和plhs[]。prhs[0]表示第一個輸入參數,prhs[1]表示第二個輸入參數,…,以此類推。如上例中,d→prhs[0],e→prhs[1],f→prhs[2],f→prhs[3]。同時注意,這些參數的類型都是mxArray *。
介面過程要把參數傳遞給計算過程,還需要從prhs中讀出矩陣的信息,這就要用到下面的mx-函數和mex-函數。
5 常用的mex-函數和mx-函數
在MATLAB6.5版本中,提供的mx-函數有106個,mex-函數有38個,下面我們僅介紹常用的函數。
5.1入口函數mexFunction
該函數是C MEX文件的入口函數,它的格式是固定的:
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
說明:MATLAB函數的調用方式一般為:[a,b,c,…]=被調用函數名稱(d,e,f,…),nlhs保存了等號左端輸出參數的個數,指針數組plhs具體保存了等號左端各參數的地址,注意在plhs各元素針向的mxArray內存未分配,需在介面過程中分配內存;prhs保存了等號右端輸入參數的個數,指針數組prhs具體保存了等號右端各參數的地址,注意MATLAB在調用該MEX文件時,各輸入參數已存在,所以在介面過程中不需要再為這些參數分配內存。

⑺ MATLAB如何調用FORTRAN語言

首先需要保存MATLAB代碼在fortran同一目錄下
這里命名成test.m
內容如下:
[color=008000]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[/color]
[color=FF0000]clear all; close all; clc;
M=load('matrix M.txt');
eigvalues=eig(M);
plot(real(eigvalues),imag(eigvalues),'-r*');
title('矩陣M的特徵值');
xlabel('特徵值實數部分');
ylabel('特徵值虛數部分');[/color]
[color=008000]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[/color]
!fortran代碼如下:
[color=0000FF]program main
implicit none
integer,parameter :: rows=100, cols=100
real*8 :: M(rows,cols)
integer :: i
call random_seed()
call random_number(M)
open(100,file='matrix M.txt')
write(100,'(<cols>E25.15)') transpose(M)
close(100)
call system("matlab -r test")
end program main[/color]
直接運行fortran代碼就可以了。
matlab不用事先打開。
vs2005+ivf10.1+matlab7.8.0 測試通過
試一試!

⑻ matlab !!!!

摘要:由於MA7ⅡAB不能直接對硬體端12進行讀寫操作,缺乏了實時性,使得工程上的應用受到了
極大的限制。而通過MATI.AB應用程序介面Mex調用C++語言,可實現在MATLAB環境下對硬體端
12信號的讀寫。為此,筆者對Mex介面文件進行了詳細介紹,包括Mex介面的各種特殊功能、詳細編
寫規則和具體編譯要求,具體闡述了Mex介面在MA啊AB環境下的調用及使用。並根據Mex介面的
相關功能。對MATLAB數據採集系統的設計在理論上進行了探討,以圖對MATLAB功能進行進一步
的擴展。
關鍵詞:MATLAB:介面;數據採集
Research of Data—Collection System Based onⅣ隊TLAB
Wang Hailong,Chen Shanjie,Li Qian,Zhang Peng,Ku Tao,Xu Dahua
(Co//ege ofEngieering,Nanjing Agriculture University,Nanjing 210031)
Abstract:Since MATLAB can not write directly to hardware available for operation.and it lacks of a re。
al-time,it works on the applications has been significantly hampered.MATLAB applications through rede—
ployment C++language interface Mex.Achievable in the MATI。AB environment for the specific hardware
interface signals.Therefore,author of a paper details Mex interfaces,inchding interfaces Mex various spe—
cial functions,and specific translation rules for the preparation of detailed,enuncimed the transfer and the
use of Mex interfaee in the MA』nAB environment.And in accordance with the relevant functional interface
Mex.MATIAB data acquisition system for the design in theory explored in a bid to further expand the
functions of MA7n。AB.
Key words:MA,11AB,Interface,Data collection
MATLAB產品系列被廣泛地應用於包括信號與
圖像處理、控制系統設計、通訊、系統模擬等諸多領域。
它的一大特性是有眾多的面向具體應用的工具箱和仿
真塊,包含了完整的函數集用來對信號圖像處理,控制
系統設計,神經網路等特殊應用進行分析和設計。其他
的產品延伸了MATLAB的能力,包括數據採集,報告
生成,和依靠MATLAB語言編程產生獨立C/C++代
碼等等。
正因為其強大的科學計算與可視化功能、簡單易
用的開放式可擴展環境以及所擁有的各種面向不同領
域而擴展的工具箱(ToolBox)t11,使得MATLAB在許多
學科領域中成為計算機輔助設計與分析、演算法研究和
應用開發的基本工具和首選平台。
但是,MATLAB也存在局限性,就是不能直接對
硬體埠進行讀寫操作,從而影響了它在測控系統開
發上的應用范圍。但它提供了應用程序介面API,通過
該介面,用戶可以方便地完成MATLAB與外部環境
的交互(如圖1所示)。為此,如何通過介面文件調用其
它語言編寫的程序(如C_卜}),再通過其實現對硬體端
口的讀寫操作,最終實現在單一MArⅡAB環境中進
行測控系統的開發,便成了一項值得探討和研究的問
題。
1 MATLAB應用程序介面文件Mex
MATLAB應用程序介面(APD主要包括3部分:
Mex文件(外部程序調用接13),Mat文件(數據輸入輸
出介面)及MATLAB計算引擎函數庫。它們實現的一
般功能分別為:(1)在MATLAB環境中調用C/c++
語言或FORTRAN語言編寫的程序,以提高數據處理
效率;(2)向MATLAB環境傳送數據或從MATLAB
環境接收數據,即實現MATLAB系統與外部環境的
數據交換;(3)在MATLAB和其他應用程序間建立客
戶機/伺服器關系,將MATLAB作為一個計算引擎,
在其他應用程序中調用從而降低程序設計的工作量。
以下重點介紹Mex文件的應用。
1.1眥X是一種動態鏈接的子程序,其具體功能如下
(1)對於某些已有的C程序,可以通過Mex方式
在MATLAB環境中直接調用;
(2)對於影響MATLAB執行速度的FOR__I,OOP
等循環體,可以編寫相應的C程序完成相同功能,並
編譯成Mex文件,提高運行速度;
(3)對於A/D或D/A卡,或其他PC硬體,可以直
接用Mex文件進行訪問,擴展MATLAB的功能;
(4)利用MEX文件,還可以使用一些軟體,如
Windows的用戶界面資源等。
1.2 Mex文件的編程規則
(1)編制自己的C++演算法程序;
(2)編制MEX源文件代碼;
MEX文件的源文件主要有兩個部分組成:
①計運算元例行程序(Computational Routine)。它是
鏈接的外部子程序,包含所有要完成計算功能的源代
碼,用來完成實際的計算工作。
②入口子例行程序(Gateway Routine)。它是計算
子例行程序和MATLAB環境之間的介面,用於完成
兩者間的數據交互。入口子例行程序是MATLAB調
用C抖程序所必需的部分,計運算元例行程序可以由入
口子例行程序調用以完成其特定的功能要求。入口子
例行程序具體的使用格式如下:
#include"mex.h"void MexFunction(int nlhs,
mxArray牛pills[],
int nrhs,const mxArray·prhs[])
{
//C語言代碼
)
其中,入口子程序的函數名必須為MexFunction。
prhs為一個結構體類型的指針數組,該數組元素按順
序指向所有的輸入參數;nrhs為輸入參數的個數;plhs
與prhs的類型一致,它指向所有的輸出參數;nlhs表
示輸出參數的個數。該函數通過prhs獲得輸入數據,
對這些輸入數據的處理後經由plhs獲得結果,該結果
作為輸出數據與其它程序進行數據交互嘲。
1.3 Mex文件的編譯和調用
在編譯Mex文件之前,必須先在MATLAB下安
裝好Mex編譯器,安裝方法如下:在MATLAB命令窗
口中輸入mex.setup然後按照提示向導逐步安裝即
可。
Mex文件在MATLAB命令窗口中直接編譯,方
式如下:mex filename,然後按回車鍵,如果編譯通
過,系統就會生成同名字的DLL文件,在以後的程序
中可以像調用MATLAB的內建函數一樣直接調用此
函數。原理如圖2。
由上可知,Mex文件可以作為一個MATLAB的
內建函數來處理,但這個函數又具有強大的介面功能,
可以完成對硬體埠信號的讀寫操作。其對硬體埠
讀寫操作的總流程如圖3所示:
2基於MATLAB的數據採集系統的概念設計
擬採用MATLAB和C的交互編程來處理數據采
集問題,這樣系統不僅具有傳統計算機數據採集系統
的全部功能,而且還具有很強的數據處理能力,實際上
構成了智能虛擬儀器t3]。
初步設計系統由三個模塊構成,MATLAB模塊的
功能包括圖形顯示和存取、數據分析和處理等,C語言
模塊主要實現串列通信功能,而硬體設備則完成對物
理量的變換[4,5/。如圖4所示。
當采樣對象確定後硬體設備也就隨之而定,而C
語言部分實現通信功能也是固定的,故所有的數據處
理功能設置都在MATLAB環境中的人機界面中實
現。該系統的3個界面實現功能如下。
主界面主要由一個圖形框和4個按鈕構成。圖形
框藉助於MATLAB的圖形處理功能,以最佳匹配模
式動態顯示實時采樣數據,實現自動示波器功能。4個
按鈕名稱分別尚釅設置串口」、「開始採集」、「數據處理」
和「退出系統」,滑鼠點擊即可實現相應功能。
在主界面選擇了「串口設置」後,就進入通信協議.
設置界面。這個界面主要由5個彈出式菜單和2個按
鈕構成,彈出式菜單的名稱和選項分別是:埠選擇
(COMI--COM4)、波特率(300-19200)、數據位m8)、停
止位(o~2)和校驗位(無、奇、偶),而2個按鈕則分別對
所設參數進行確認或者修正。
在主界面選擇了「數據處理,,後,則進入數據處理
界面。這個界面的功能與采樣對象有關,需由用戶自己
針對任務要求進行編程。
3結束語
MATLAB具有各種豐富的數值運算及圖形處理
功能,大量實用控制工具箱的存在更為其控制應用奠
定了堅實的基礎;而C語言則對硬體系統具有強有力
的處理能力,可方便地實現數據採集、串列通訊等功
能嘲。Mex文件是MATLAB調用C++和其他語言(如
Visual Fortran等)的簡易介面,它極大地擴展了
MATLAB的應用范圍,使MATLAB系統成為真正意
義上的開放的、功能完善的、自包容的程序設計和數據
處理集成環境Isl。
參考文獻
【l】王正林,王盛開,陳國順.MATLAB/Simulink與控制系統模擬嗍.
北京:電子工業出版社,2005:11-13.
【2】張威.MATLAB外部接121編程嗍.西安:西安電子科技大學出版
社,2004:50-85.
【3】廖良斌,喻方平.基於DSP和USB的圖像採集系統的研究叨.武漢
理工大學學報(交通科學與工程版),2006,.30(1):120.123.
[4】申鼎才,郭慶平.基於Interact的分布式數據採集與分析在岩土工
程中的應用研究明.武漢理工大學學報(交通科學與工程版),
2005,29(6):974-976,992.
【5】王志冰,李漢強.基於USB匯流排的數據採集系統的設計與實現叨.
武漢理工大學學報(交通科學與工程版),2005,29(5):758.761.
[6】楊義偉,蔣大明,戴勝華.駝峰信號微機監測系統的數據採集陰.武
漢理工大學學報(交通科學與工程版),2005,.29(1):154-156.
[7】楊健,張慧慧.基於DSP和ARM的網路化數據採集與信號分析終
端田.計算機工程,2006,32(8):269-271.
【8】李堯坤,史忠科,畢業等.Matlab在基於B/S模式的決策支持系統
中的應用叨.計算機工程,2006,32(5):255-256,282.

閱讀全文

與matlab外部介面編程pdf相關的資料

熱點內容
單片機順序控制 瀏覽:994
圓弧螺紋演算法 瀏覽:753
抖音平台伺服器是什麼 瀏覽:353
安卓怎麼改自己的微信來電鈴聲 瀏覽:589
mac退出終端命令行 瀏覽:611
拼多多上幾百塊錢的安卓手機怎麼樣 瀏覽:783
vs網站工程編譯很慢 瀏覽:274
合肥拍違章的app叫什麼 瀏覽:766
sw怎麼把總裝配體放在文件夾外 瀏覽:832
ios系統壓縮包後綴 瀏覽:496
按鈕鏈接宏後編譯錯誤 瀏覽:635
華為首席編譯器 瀏覽:175
什麼app可以幫助自己唱歌更好聽 瀏覽:834
pdf解開 瀏覽:251
nginx伺服器需要什麼硬體 瀏覽:204
圖警報命令 瀏覽:494
什麼app能下歌詞 瀏覽:40
歐美程序員的電視劇 瀏覽:44
手機使用萬能命令 瀏覽:396
編譯過程中可以發現拼寫錯誤嗎 瀏覽:420