2016-06-01 63 views
5

我想寫一個非常簡單的mex文件,讓我們來試試它的工作方式。我閱讀了大量材料,閱讀了更多內容,更讓我感到困惑。我需要這個進一步編寫一個與外部硬件交互的mex文件。請幫忙!在matlab中編寫一個非常基本的mex函數

// header file - printing.h // 

#include<iostream> 
class printing 
{ 
public: 

    void name(); 
    void age(); 
}; 

// cpp file - printing.cpp // 
#include<iostream> 
#include "mex.h" 
#include "matrix.h" 
#include "printing.h" 
#include <string> 

using namespace std; 

void mexFunction(int nlhs, mxArray*plhs[], 
       int nrhs, const mxArray *prhs[]) 
{ 
    printing p1; 
    p1.name(); 
    p1.age(); 

} 

void printing::name() 
{ 
    cout << "NAME" << endl; 
} 

void printing::age() 
{ 
    cout << "20" << endl; 

} 

// .m文件 - test.m //

sprintf ('WELCOME') 
printing() 

當我運行test.m文件,我想看看 歡迎 NAME 但是我只看到歡迎。我知道我沒有更新plhs []數組。但我想要做的是在mexFunction中執行一些東西。爲什麼cout在name()和age()中不能實現這個功能?

另外,我如何確認name()和age()被執行?

+1

請注意,cout鏈接到系統的控制檯,並且Matlab有一個自己的「控制檯」,他們稱之爲「命令窗口」。這意味着你的cout輸出將不會在Matlab中看到。 – patrik

回答

5

調用cout不會打印到MATLAB控制檯,您需要使用MEX printf函數。

mexPrintf("NAME\n"); 
+0

非常感謝! – Learner