日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab调用c语言驱动函数,[转载]Matlab调用C语言函数

發(fā)布時(shí)間:2024/1/23 循环神经网络 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab调用c语言驱动函数,[转载]Matlab调用C语言函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

3.3000

要得出以上的結(jié)果,那應(yīng)該怎樣做呢?

解決方法之一是要通過使用MEX文件,MEX文件使得調(diào)用C函數(shù)和調(diào)用Matlab的內(nèi)置函數(shù)一樣方便。MEX文件是由原C代碼加上MEX文件專用的接口函數(shù)后編譯而成的。

可以這樣理解,MEX文件實(shí)現(xiàn)了一種接口,它把在Matlab中調(diào)用函數(shù)時(shí)輸入的自變量通過特定的接口調(diào)入了C函數(shù),得出的結(jié)果再通過該接口調(diào)回Matlab。該特定接口的操作,包含在mexFunction這個(gè)函數(shù)中,由使用者具體設(shè)定。

所以現(xiàn)在我們要寫一個(gè)包含add和mexFunction的C文件,Matlab調(diào)用函數(shù),把函數(shù)中的自變量(如上例中的1.1和2.2)傳給mexFunction的一個(gè)參數(shù),mexFunction把該值傳給add,把得出的結(jié)果傳回給mexFunction的另一個(gè)參數(shù),Matlab通過該參數(shù)來給出在Matlab語句中調(diào)用函數(shù)時(shí)的輸出值(如上例中的a)。

比如該C文件已寫好,名為add.c。那么在Matlab中,輸入:

>> mex add.c

就能把a(bǔ)dd.c編譯為MEX文件(編譯器的設(shè)置使用指令mex

-setup),在Windows中,MEX文件類型為mexw32,即現(xiàn)在我們得出add.mexw32文件。現(xiàn)在,我們就可以像調(diào)用M函數(shù)那樣調(diào)用MEX文件,如上面說到的例子。所以,通過MEX文件,使用C函數(shù)就和使用M函數(shù)是一樣的了。

我們現(xiàn)在來說mexFunction怎樣寫。

mexFunction的定義為:

void mexFunction(

int nlhs,

mxArray *plhs[],

int nrhs,

const mxArray *prhs[]) {

}

可以看到,mexFunction是沒返回值的,它不是通過返回值把結(jié)果傳回Matlab的,而是通過對(duì)參數(shù)plhs的賦值。mexFunction的四個(gè)參數(shù)皆是說明Matlab調(diào)用MEX文件時(shí)的具體信息,如這樣調(diào)用函數(shù)時(shí):

>> b = 1.1; c = 2.2;

>> a = add(b, c)

mexFunction四個(gè)參數(shù)的意思為:

nlhs = 1,說明調(diào)用語句左手面(lhs-left hand side)有一個(gè)變量,即a。

nrhs = 2,說明調(diào)用語句右手面(rhs-right hand side)有兩個(gè)自變量,即b和c。

plhs是一個(gè)數(shù)組,其內(nèi)容為指針,該指針指向數(shù)據(jù)類型mxArray。因?yàn)楝F(xiàn)在左手面只有一個(gè)變量,即該數(shù)組只有一個(gè)指針,plhs[0]指向的結(jié)果會(huì)賦值給a。

prhs和plhs類似,因?yàn)橛沂置嬗袃蓚€(gè)自變量,即該數(shù)組有兩個(gè)指針,prhs[0]指向了b,prhs[1]指向了c。要注意prhs是const的指針數(shù)組,即不能改變其指向內(nèi)容。

因?yàn)镸atlab最基本的單元為array,無論是什么類型也好,如有double array、 cell array、 struct

array……所以a,b,c都是array,b = 1.1便是一個(gè)1x1的double

array。而在C語言中,Matlab的array使用mxArray類型來表示。所以就不難明白為什么plhs和prhs都是指向mxArray類型的指針數(shù)組。

完整的add.c如下:

// add.c

#include "mex.h" // 使用MEX文件必須包含的頭文件

總結(jié)

以上是生活随笔為你收集整理的matlab调用c语言驱动函数,[转载]Matlab调用C语言函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。