Matlab 調(diào)用c++函數(shù)(matlab c++混合編程)

在matlab里面將計算復雜度高的函數(shù)寫成c++是非常實用的,尤其是對于我這種對c++編譯不是很理解的小白。以前每次百度,出來的都是一些非常簡單的例子,根本不知道如何入手,發(fā)現(xiàn)最直接的方法就是看別人在github上分享的代碼和matlab 的document. 所以我以一個不是那么簡單的例子入手,看一些整個流程。

主要分為兩部分(在matlab命令窗口(command window)下輸入 doc mex 可以找到你需要的所有說明文件):

1.寫(輸入傳入和傳出,用matlab給出的接口函數(shù),將數(shù)據(jù)傳進cpp file并返回給matlab,數(shù)據(jù)一旦傳入c file, 就得嚴格按照c++的規(guī)則進行編程);2.編譯成matlab可以調(diào)用的函數(shù).

下面是我從程序成截出來的主要部分:

在matlab里面調(diào)用

注意到,F(xiàn)V.faces 是一個N*3的矩陣,但是c++不支持,所以拆成了數(shù)列3個N*1的數(shù)列,同理FV.vertices. 我們這里有八個參數(shù)傳入了polygan2voxel_double函數(shù),接下來我們看一下c file是如何用mexFunction接入的。下圖135行 “mex.h”包含我們需要借口函數(shù),可以看到,mexFunction只有四個參數(shù):

nlhs: 輸出參數(shù)的個數(shù)(number),我們這里是1, 不需要我們在matlab里面給,它會自己計算,只是用來做check的函數(shù)(如下圖的152-157行)

plhs:輸出參數(shù)的指針(point),這里就是在c file中指向Volume的指針(不要害怕指針,我也挺不喜歡這個,就當c++的數(shù)組用),下圖177-178告訴我們是如何創(chuàng)建的輸出參數(shù)的?! 癿exCreate**” 是創(chuàng)建函數(shù),“mexGet**”是取值函數(shù)。去MATLAB的文檔里面看細節(jié),然后找你需要的函數(shù)。

nrhs:輸入?yún)?shù)的個數(shù), 我們這里是8, 不需要我們在matlab里面給,它會自己計算,只是用來做check的函數(shù)(如下圖的152-157行)

prhs:輸入?yún)?shù)的指針,在我們這里就是指向輸入的八個參數(shù),下圖159-167告訴我們?nèi)绾稳〕鰜?/p>

(notes: 這些參數(shù)不是縮寫,所以不好記,但是還是要記住,mexFunction參數(shù)依次是輸出(個數(shù),指針)-->輸入(個數(shù),指針))

完成這些以后,就像寫c++一樣正常寫就好了,然后就是編譯 “mex polygan2voxel_double.c”  (下面這些在一個名叫polygan2voxel_double.c文件里) 編譯的時候可能會有很多問題,“help mex” 看一下可選參數(shù)。 我之前就碰到過gcc 版本問題,就是matlab mex默認版本和系統(tǒng)的gcc版本不匹配,后來是通過可選參數(shù)指定gcc 版本解決的。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 原文地址:C語言函數(shù)調(diào)用棧(一)C語言函數(shù)調(diào)用棧(二) 0 引言 程序的執(zhí)行過程可看作連續(xù)的函數(shù)調(diào)用。當一個函數(shù)執(zhí)...
    小豬啊嗚閱讀 4,974評論 1 19
  • ??我喜歡那些和你一起度過的時間,分分鐘的快樂可以抵消一上午的陰霾。 是什么時候開始變得不那么懶,好像也少了一些怯懦...
    1ec35bc068af閱讀 692評論 0 1
  • 七月26號,天下起大雨,雨滴細而密,像夜空垂下的珠簾。臨走時我忘了關窗,現(xiàn)在窗前屋里已積了一灘水。 把抹布扔在上...
    二白一青閱讀 232評論 0 1
  • 文/逗逗,資料/網(wǎng)絡 1. QQ里有一個好友得抑郁癥,發(fā)了說說,準備跳樓自殺。 那條說說下面,瞬間有長長的評論,都...
    遇見逗逗閱讀 312評論 0 0
  • 千言萬語不必說 只有一首歌 都知歡聚最難得 難奈別離多 ——GALA樂隊。 曾經(jīng)的學弟學妹,好像才剛成長為學長學姐...
    王儒星閱讀 1,077評論 0 0

友情鏈接更多精彩內(nèi)容