《電子技術應用》
您所在的位置:首頁 > 其他 > 其他 > Matlab與C語言的應用接口程序

Matlab與C語言的應用接口程序

2008-06-18
關鍵詞: Matlab C語言

MatlabC語言的應用接口程序

1、理解幾個常用的socket函數

#include
#include
int socket(int domain,int type,int portocol);
domain指所使用的協議族(family)可以為AF_UNIX和AF_INET,一般只用AF_INET(指Internet)type指所用的傳輸類型,可以為SOCK_STERAM(面向連接的TCP),和SOCK_DGRAM(面向無連接的udp)
int bind(int s,const struct sockaddr *address,size_t address_len);
s為socket返回的文件描述符
address為協議族名稱和其他信息
具體結構為struct sockaddr_in{
short sin_family;/*協議族
u_short sin_port;/*端口*/
struct in_addr sin_addr;/*地址*/
char sin_zero[8];
};
int listen(int s,int backlog);
backlog為容許的請求數目
int accept(int s,struct sockaddr *address,int *address_len);
這里的前兩個參數同上
addres_len是要傳遞一個記有結構大小的地址
int connect(int s,struct sockaddr *address,size_t address_len);
這里的參數意義同bind

2.理解建立程序的一般調用過程

要建立一個處理連接的服務器端程序,首先要調用socket函數創建一個socket,返回一個文件句柄fd,使以后對它的操作就象對普通文件設備一樣讀寫。

由于是服務器端必須對一個斷口進行監聽其他機器的請求,所以接下去調用bind函數,傳入剛才的fd,定義好地址和端口,由于是要接受來自任何host的連接所以應講sin_addr賦為INADDR_ANY,port為你所設定的端口。

注意:這里的地址和端口是網絡字節順序,所以要調用htonl,htons完成主機字節順序
到網絡字節的轉變

接下來就是監聽listen,調用accept接受來自客戶端的請求,accpet返回連接后的文件描述符,你就可以用它進行收發信息(對應于read,write)這樣的一個過程就是socket->bind->listen->accpet->Read,write
而對于客戶端則是socket->connect->read,write

三、C語言程序MEX文件實例

MATLAB 5 API提供了一系列程序來處理MATLAB所支持的各種數據類型,每一種數據類型都有對應函數共你使用來處理對應的數據。下面給出一個簡單的C語言程序和與之對應的MEX文件代碼,該程序的功能是將標量x加倍。

#include "math.h"
void timestwo(double y[], double x[])
{
y[0]=2.0*x[0];
return;
}

下面是與C語言程序功能相同的MEX文件:
#include "mex.h"
void timestwo(double y[], double x[])
{
y[0]=2.0*x[0];
}
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
double *x, *y;
int mrows, ncols;
/*檢查正確的參數數目*/
if(nrhs!=1){
mexErrMsgTxt("需要一個輸入參數.");
}
else if(nlhs>1){
mexErrMsgTxt("輸出參數太多.");
}
/*輸入變量必須是非復數類型的標量*/
mrows=mxGetM(prhs[0]);
ncols=mxGetN(prhs[0]);
if(!mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) || !(mrows==1 && ncols==1)){
mexErrMsgTxt("輸入變量必須是非復數類型的標量.");
}
/*為返回參數創建矩陣*/
plhs[0]=mxCreateDoubleMatrix(mrows, ncols, mxREAL);
/*分配輸入輸出參數的指針*/
x=mxGetPr(prhs[0]);
y=mxGetPr(plhs[0]);
/*調用timestwo子函數*/
timestwo(y, x);
}

C語言是在編譯的時候檢查函數參數。MATLAB可以在M函數中傳遞任意數量和類型的參數,MEX文件也是如此,不過在程序中必須可靠地處理輸入輸出參數的數目。如果將上面的MEX文件命名為timestwo.c,就可以對它進行編譯和鏈接,在MATLAB命令窗口下輸入:
mex timestwo.c

這是產生MEX文件timestwo.***所必需的步驟,該文件的擴展名所運行的系統平臺的類型。Windows系統下,擴展名為dll。此時,就可以象調用M函數一樣調用timestwo了。
在MATLAB命令窗口中輸入:
x=2;
y=timestwo(x);
就可以得到:
y=4;

四、小 結

MEX文件雖然具有較強大的功能,但并不是對所有的應用都恰當。MATLAB是一個高效率的編程系統,特別適合于工程計算、系統仿真等應用。它的最大優點就是將人們從繁雜的程序中解放出來。因此,能夠用M文件完成的程序,應盡量使用MATLAB編寫,除非遇到必須使用MEX文件的情況。

MATLAB的應用編程接口是一個功能強大的系統,除了調用C或Fortran程序,還可以實現從MATLAB環境中輸入輸出數據、在MATLAB中和其他程序建立客戶/服務器關系等功能。

  

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜视频一区二区| 国产精品护士白丝一区av| 亚洲天堂av高清| 亚洲国产精品女人久久久| 午夜精品久久久久久久蜜桃app | 影音先锋日韩精品| 韩日欧美一区二区| 国产亚洲欧美日韩精品| 国产日韩1区| 国产视频一区二区在线观看| 国产欧美一区二区三区久久| 国产精品亚洲一区| 国产欧美日韩专区发布| 国产日韩欧美一区| 激情欧美一区二区三区在线观看 | 在线观看视频亚洲| 精品成人一区二区三区| 在线看国产日韩| 亚洲国产日韩欧美| 亚洲精品乱码久久久久久蜜桃91| 亚洲另类一区二区| 亚洲五月六月| 亚洲欧美日韩在线播放| 欧美一级免费视频| 亚洲国产成人av在线| 亚洲乱亚洲高清| 一区二区三区高清不卡| 亚洲欧美国产精品桃花| 欧美在线看片| 蜜臀va亚洲va欧美va天堂| 欧美国产日韩一区二区三区| 欧美久久婷婷综合色| 欧美性一二三区| 国产拍揄自揄精品视频麻豆| 狠久久av成人天堂| 亚洲欧洲综合| 一区二区三区 在线观看视频 | 久久国产精品久久久| 久久蜜桃精品| 欧美精品日韩| 国产精品视频福利| 一区二区三区在线视频播放| 亚洲激情精品| 亚洲一级二级在线| 亚洲国产精品嫩草影院| 亚洲午夜国产成人av电影男同| 欧美一区二区高清在线观看| 麻豆免费精品视频| 国产精品jvid在线观看蜜臀 | 在线欧美日韩精品| av成人动漫| 久久激情中文| 亚洲性视频网站| 久久亚洲综合| 欧美视频观看一区| 狠狠色丁香久久综合频道 | 亚洲欧洲一区二区三区在线观看 | 国产嫩草一区二区三区在线观看| 伊人成人在线视频| 一区二区欧美亚洲| 91久久午夜| 欧美一级理论性理论a| 欧美国产日韩精品免费观看| 国产精品中文在线| 最新日韩中文字幕| 欧美制服丝袜第一页| 一本色道久久88亚洲综合88| 久久精品免视看| 欧美日韩中文精品| 激情综合网激情| 亚洲一区二区免费| 亚洲精选大片| 久久久久久夜精品精品免费| 欧美日韩免费网站| 在线观看一区| 亚洲在线一区二区| 夜夜夜久久久| 久久人人爽人人爽| 国产精品欧美久久| 亚洲靠逼com| 亚洲人成网站在线播| 久久精品国产77777蜜臀| 欧美视频在线观看一区二区| 亚洲第一精品久久忘忧草社区| 午夜精彩国产免费不卡不顿大片| 一本大道久久a久久精二百| 久久综合给合久久狠狠狠97色69| 国产精品美女久久福利网站| 亚洲精品字幕| 亚洲精品你懂的| 久久这里有精品视频| 国产精品永久免费| 亚洲视频999| 亚洲天堂成人在线观看| 欧美成人乱码一区二区三区| 好吊色欧美一区二区三区四区| 亚洲淫性视频| 午夜精品久久久久久久99水蜜桃| 欧美日精品一区视频| 亚洲人成高清| 亚洲美女福利视频网站| 你懂的亚洲视频| 黑人中文字幕一区二区三区 | 久久影院午夜片一区| 国产三级精品在线不卡| 亚洲一级一区| 亚洲伊人伊色伊影伊综合网| 欧美日本在线一区| 亚洲国产一区二区三区在线播| 亚洲国产经典视频| 久久久久久网站| 国产一区日韩二区欧美三区| 午夜亚洲性色视频| 欧美一区二区三区四区高清| 国产精品毛片va一区二区三区 | 欧美日本亚洲韩国国产| 亚洲欧洲在线免费| 99精品久久久| 欧美精品一区二区在线观看| 亚洲国产小视频在线观看| 日韩视频专区| 欧美日韩美女在线观看| 日韩天堂在线视频| 亚洲深爱激情| 欧美午夜精品久久久久久超碰| 亚洲视频视频在线| 午夜综合激情| 国产日韩在线亚洲字幕中文| 久久www成人_看片免费不卡| 久久理论片午夜琪琪电影网| 一区二区三区**美女毛片| 亚洲自拍都市欧美小说| 欧美成人小视频| 亚洲精品国产精品乱码不99 | 欧美一级在线视频| 国产视频精品xxxx| 亚洲国产裸拍裸体视频在线观看乱了中文| 可以看av的网站久久看| 亚洲高清在线观看| 在线亚洲免费视频| 国产精品视频免费在线观看| 欧美一区二区日韩一区二区| 美女视频黄 久久| 91久久国产精品91久久性色| 一区二区毛片| 国产精品视频内| 欧美在线亚洲| 欧美xart系列高清| 日韩视频免费看| 先锋资源久久| 一区二区三区在线观看视频| 99精品国产热久久91蜜凸| 国产精品久久久久久久一区探花 | 麻豆久久婷婷| 99热精品在线| 久久久精品2019中文字幕神马| 亚洲成人在线免费| 亚洲无亚洲人成网站77777| 国产欧美一区二区三区久久| 亚洲韩国日本中文字幕| 欧美视频中文字幕在线| 午夜天堂精品久久久久| 欧美福利一区| 亚洲综合99| 欧美国产精品一区| 亚洲图色在线| 老牛国产精品一区的观看方式| 日韩午夜在线视频| 久久av最新网址| 亚洲精品一级| 久久精品系列| 日韩视频免费观看高清完整版| 亚洲电影天堂av| 性欧美办公室18xxxxhd| 欧美不卡三区| 亚洲一区二区免费视频| 欧美sm视频| 亚洲欧美日产图| 欧美高清在线观看| 亚洲免费视频成人| 欧美激情国产高清| 性欧美办公室18xxxxhd| 欧美日韩国产三区| 欧美在线一区二区| 欧美日韩一区二区免费在线观看| 久久超碰97中文字幕| 欧美日韩在线综合| 91久久国产综合久久蜜月精品| 国产精品久久久久久久久免费樱桃| 亚洲国产精品悠悠久久琪琪| 国产精品国产三级国产普通话99| 最新高清无码专区| 国产欧美婷婷中文| 亚洲小视频在线观看| 揄拍成人国产精品视频| 亚洲欧美制服另类日韩| 91久久夜色精品国产九色| 久久国产精品一区二区三区四区 | 亚洲视频 欧洲视频| 欧美精品在线视频观看|