當前位置:首頁 » 編程軟體 » matlab介面編程

matlab介面編程

發布時間: 2022-10-20 13:46:12

『壹』 matlab和c混合編程如何運行

簡單點的,你就用matlab寫一個介面程序,封裝你的c程序,類似下面這種:(matlab的例子,實現數組相乘,文件為arrayProct.c)

#include "mex.h"

/* 你的c */
void arrayProct(double x, double *y, double *z, mwSize n)
{
mwSize i;
/* multiply each element y by x */
for (i=0; i<n; i++) {
z[i] = x * y[i];
}
}

/* 介面程序 */
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
/*初始化輸入輸出*/
double multiplier; /* input scalar */
double *inMatrix; /* 1xN input matrix */
mwSize ncols; /* size of matrix */
double *outMatrix; /* output matrix */

/* 參數檢查,如果程序較簡單也可以不用做*/
if(nrhs!=2) {
mexErrMsgIdAndTxt("MyToolbox:arrayProct:nrhs","Two inputs required.");
}
if(nlhs!=1) {
mexErrMsgIdAndTxt("MyToolbox:arrayProct:nlhs","One output required.");
}
/* make sure the first input argument is scalar */
if( !mxIsDouble(prhs[0]) ||
mxIsComplex(prhs[0]) ||
mxGetNumberOfElements(prhs[0])!=1 ) {
mexErrMsgIdAndTxt("MyToolbox:arrayProct:notScalar","Input multiplier must be a scalar.");
}

/* check that number of rows in second input argument is 1 */
if(mxGetM(prhs[1])!=1) {
mexErrMsgIdAndTxt("MyToolbox:arrayProct:notRowVector","Input must be a row vector.");
}

/* get the value of the scalar input */
multiplier = mxGetScalar(prhs[0]);

/* create a pointer to the real data in the input matrix */
inMatrix = mxGetPr(prhs[1]);

/* get dimensions of the input matrix */
ncols = mxGetN(prhs[1]);

/* create the output matrix */
plhs[0] = mxCreateDoubleMatrix(1,ncols,mxREAL);

/* get a pointer to the real data in the output matrix */
outMatrix = mxGetPr(plhs[0]);

/* call the computational routine */
arrayProct(multiplier,inMatrix,outMatrix,ncols);
}

這個看起來復雜,其實很簡單的,就幾步:
1、使用mxGet*將輸入變為matlab兼容形式
2、使用mxSet*初始化輸出空間
3、使用你的C程序運算

『貳』 matlab是什麼編程語言

matlab編程語言是:C++語言

Matlab是一個高級的矩陣/陣列語言,它包含控制語句、函數、數據結構、輸入和輸出和面向對象編程特點。用戶可以在命令窗口中將輸入語句與執行命令同步,也可以先編寫好一個較大的復雜的應用程序(M文件)後再一起運行。

MATLAB語言是基於最為流行的C++語言基礎上的,因此語法特徵與C++語言極為相似,而且更加簡單,更加符合科技人員對數學表達式的書寫格式。

使之更利於非計算機專業的科技人員使用。而且這種語言可移植性好、可拓展性極強,這也是MATLAB能夠深入到科學研究及工程計算各個領域的重要原因。

MATLAB程序介面:

新版本的MATLAB可以利用MATLAB編譯器和C/C++數學庫和圖形庫,將自己的MATLAB程序自動轉換為獨立於MATLAB運行的C和C++代碼。

允許用戶編寫可以和MATLAB進行交互的C或C++語言程序。另外,MATLAB網頁服務程序還容許在Web應用中使用自己的MATLAB數學和圖形程序。MATLAB的一個重要特色就是具有一套程序擴展系統和一組稱之為工具箱的特殊應用子程序。

工具箱是MATLAB函數的子程序庫,每一個工具箱都是為某一類學科專業和應用而定製的,主要包括信號處理、控制系統、神經網路、模糊邏輯、小波分析和系統模擬等方面的應用。

以上內容參考:網路-MATLAB

『叄』 matlab輸入x, y的值,並把它們的值互換後輸出 怎麼做啊

%demoswap.m

x = input('x=');

y = input('y=');

disp ([x,y]);

t=x;

x=y;

y=t;

disp ([x,y]);

>>demoswap

x=100

y=200

100 200

200 100

>>

或:

x=input('x=');

y=input('y=');

t=x;

x=y;

y=t;

(3)matlab介面編程擴展閱讀:

MATLAB數學函數庫包括了大量的計算演算法。從基本演算法如四則運算、三角函數,到復雜演算法如矩陣求逆、快速傅里葉變換等。

MATLAB應用程序介面(API)是一個使MATLAB語言能與C、Fortran等其它高級編程語言進行交互的函數庫。該函數庫的函數通過調用動態鏈接庫(DLL)實現與MATLAB文件的數據交換,其主要功能包括在MATLAB中調用C和Fortran程序,以及在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生成的dll文件進行編程

通常在實現圖像處理的演算法時我們使用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
6.0
in
E:\Program
Files\Microsoft
Visual
Studio」,根據自己實際情況選擇。
2、在命令行中輸入mbuild
-setup
這里的選項和上面類似,依次選擇環境確定。
3、生成dll文件
一句命令mcc
-W
cpplib:add
-T
link:lib
add.m
前面的add表示生成的dll文件名,後面的add.m顧名思義是.m文件名。生成後會多出8個文件,有用的是add.ctfadd.dll
add.lib
add.h4個文件,據說新版的Matlab不會生成.ctf文件。
二、VC6.0中調用生成的dll文件
上面生成的dll文件,我們可以藉助VC6.0的Depends工具查看導出函數名,但是我們要調用導出函數必須要知道函數的形參返回類型等,這里要藉助.h文件,它包含了導出函數的聲明,下面以實例來講解使用方法:
1、add.m文件
function
[a,b]=add(x,y)
a=2*x+y;
b=3*y;
end
注意了add函數有兩個返回值,可以猜測一下在C++中是如何處理的;
2、add.h文件
截取其中一段關鍵代碼如下:
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)工程屬性-》連接-》輸入-》附加依賴項
輸入:add.lib
mclmcrrt.lib
mclmcr.lib,第一個是生成的。或者在預處理中加入下面代碼
#pragma
comment(lib,
"mclmcrrt.lib")
#pragma
comment(lib,
"mclmcr.lib")
#pragma
comment(lib,
"add.lib")
4、C++代碼
#include
<iostream>
#include
"add.h"
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
;
x.GetData(i,1);
y.GetData(j,1);
cout<<"x="<<*i<<"
y="<<*j<<endl;
getchar();
return
0;
}
注意:addInitialize()一定要!

『陸』 matlab是什麼編程語言

matlab編程語言是:C++語言。

Matlab是一個高級的矩陣/陣列語言,它包含控制語句、函數、數據結構、輸入和輸出和面向對象編程特點。用戶可以在命令窗口中將輸入語句與執行命令同步,也可以先編寫好一個較大的復雜的應用程序(M文件)後再一起運行。

MATLAB語言是基於最為流行的C++語言基礎上的,因此語法特徵與C++語言極為相似,而且更加簡單,更加符合科技人員對數學表達式的書寫格式。

使之更利於非計算機專業的科技人員使用。而且這種語言可移植性好、可拓展性極強,這也是MATLAB能夠深入到科學研究及工程計算各個領域的重要原因。

MATLAB程序介面:

新版本的MATLAB可以利用MATLAB編譯器和C/C++數學庫和圖形庫,將自己的MATLAB程序自動轉換為獨立於MATLAB運行的C和C++代碼。

允許用戶編寫可以和MATLAB進行交互的C或C++語言程序。另外,MATLAB網頁服務程序還容許在Web應用中使用自己的MATLAB數學和圖形程序。MATLAB的一個重要特色就是具有一套程序擴展系統和一組稱之為工具箱的特殊應用子程序。

『柒』 Matlab 里 premnmx tramnmx postmnmx 分別表示什麼

premnmx函數:用於將網路的輸入數據或輸出數據進行歸一化,歸一化後的數據將分布在[-1,1]區間內。tramnmx:使用網路時所用的新數據和樣本數據接受相同的預處理函數。

postmnmx:常用的函數,網路輸出結果需要進行反歸一化還原成原始的數據。postmnmx語句的語法格式是:[PN] = postmnmx(P,minp,maxp)。

MATLAB包括擁有數百個內部函數的主包和三十幾種工具包。工具包又可以分為功能性工具包和學科工具包。功能工具包用來擴充MATLAB的符號計算,可視化建模模擬,文字處理及實時控制等功能。學科工具包是專業性比較強的工具包,控制工具包,信號處理工具包,通信工具包等都屬於此類。

(7)matlab介面編程擴展閱讀:

MATLAB應用程序介面(API)是一個使MATLAB語言能與C、Fortran等其它高級編程語言進行交互的函數庫。

該函數庫的函數通過調用動態鏈接庫(DLL)實現與MATLAB文件的數據交換,其主要功能包括在MATLAB中調用C和Fortran程序,以及在MATLAB與其它應用程序間建立客戶、伺服器關系。

『捌』 matlab代碼是什麼

matlab編程語言是:C++語言。而且這個Matlab是一個高級的矩陣/陣列語言,它包含控制語句、函數、數據結構、輸入和輸出和面向對象編程特點。用戶可以在命令窗口中將輸入語句與執行命令同步,也可以先編寫好一個較大的復雜的應用程序(M文件)後再一起運行。


開發環境

MATLAB開發環境是一套方便用戶使用的MATLAB函數和文件工具集,其中許多工具是圖形化用戶介面。它是一個集成的 用戶工作空間,允許用戶輸入輸出數據,並提供了M文件的集成編譯和調試環境,包括MATLAB桌面、命令窗口、M文件編輯調試器、MATLAB工作空間和在線幫助文檔。

『玖』 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.

熱點內容
便宜的免費雲伺服器 發布:2025-05-17 11:08:50 瀏覽:775
中國頂級dhcp解析伺服器地址 發布:2025-05-17 11:06:27 瀏覽:32
php轉義html 發布:2025-05-17 11:04:00 瀏覽:566
鋼筋籠加密區規范 發布:2025-05-17 10:59:50 瀏覽:3
我的世界網易手機版主播伺服器房號 發布:2025-05-17 10:40:59 瀏覽:226
豎編譯 發布:2025-05-17 09:56:08 瀏覽:227
編程畫飛機 發布:2025-05-17 09:54:03 瀏覽:801
手機如何解鎖密碼屏幕鎖怎麼刪除 發布:2025-05-17 09:52:04 瀏覽:123
網路無法訪問網頁 發布:2025-05-17 09:51:40 瀏覽:649
雲存儲box估值 發布:2025-05-17 09:47:11 瀏覽:512