C C 和matlab混合程式設計

2021-08-23 14:37:31 字數 1384 閱讀 3867

有些時候使用混合程式設計能夠讓程式更加高效

筆者所使用的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程式中呼叫...