2016-06-01 4 views
5

Я пытаюсь написать очень простой файл в формате mex, скажем, чтобы попробовать, как он работает. Я прочитал много материалов и больше читаю, больше смущаюсь. Мне нужно это для дальнейшей записи файла mex, который взаимодействует с внешним оборудованием. Пожалуйста помоги!Написание чрезвычайно простой mex-функции в matlab

// 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() не достигнуть этого?

Также, как я могу подтвердить, что выполняются имя() и age()?

+1

Обратите внимание: cout связан с консолью системы и что Matlab имеет собственную консоль, которую они называют «командным окном». Это означает, что ваш выход cout не будет отображаться в Matlab. – patrik

ответ

5

Звонок cout не будет печатать на консоли MATLAB, вам нужно использовать функцию MEX printf.

mexPrintf("NAME\n"); 
+0

Большое спасибо! – Learner