有些時候使用混合程式設計能夠讓程式更加高效
筆者所使用的matlab軟體為2018a,c++編譯器為microsoft visual c++ 2017(matlab本身是不帶c/c++編譯器的,安裝編譯軟體是必須的)
仍然是先從簡單的hello world 開始
首先編寫乙個c++程式(當然也可以c程式)
#include #includeusing namespace std;
void mexfunction(int nlhs, mxarray *plhs, int nrhs, const mxarray *prhs)
命名為hw.cpp
將hw.cpp複製到matlab的工作路徑下,在命令列視窗輸入mex hw.cpp並回車,之後會在工作路徑下生成hw.mexw64檔案
輸入hw則執行hw.mexw64檔案
接著編寫乙個能夠在matlab中呼叫c++程式,用於計算當前是一年當中的第幾天
介面函式mexfunction必須包括的引數有
引數名稱
引數描述
prhs
輸入引數
plhs
輸出引數
nrhs
輸入引數的個數
nlhs
輸出引數的個數
#include #include "mex.h" //標頭檔案必須包含mex.h
using namespace std;
double c_n(int year, int month, int day);
void mexfunction(int nlhs, mxarray *plhs, int nrhs, const mxarray *prhs)
if ((day < 1) || (day > 31))
}
double c_n( int year,int month,int day)
a += day;
double tyr;
tyr = (double)a;
return tyr;
}
樣例
matlab和C C 混合程式設計 Mex
最近的專案需要matlab和c的混合程式設計,經過一番努力終於完成了專案要解決的問題。現在就將mex的一些經驗總結一下,當然只是剛剛開始,以後隨著學習的深入繼續新增。首先講講寫mex的一些常規規定,然後我們會重點關注混合程式設計中最難解決資料的問題 結構到底如何轉換,並且後面會重點說一下自己的程式。...
C C 與Matlab混合程式設計初探
分割線以下為正文 matlab 擁有豐富的功能,程式設計簡單。不過,有些情況下,matlab程式的執行速度比較慢。c c 編譯執行的程式速度比較快,程式設計難度上比matlab要高一些。因此存在一種方案,就是使用matlab實現我們的實驗程式,用c c 來實現matlab程式中比較耗時的部分,從ma...
C C 與Matlab混合程式設計初探
matlab 擁有豐富的功能,程式設計簡單。不過,有些情況下,matlab程式的執行速度比較慢。c c 編譯執行的程式速度比較快,程式設計難度上比matlab要高一些。因此存在一種方案,就是使用matlab實現我們的實驗程式,用c c 來實現matlab程式中比較耗時的部分,從matlab程式中呼叫...