2016-06-01 10 views
5

Sto provando a scrivere un file mex molto semplice, diciamo solo per provare come funziona. Ho attraversato molti materiali e più leggo, più mi confondo. Ho bisogno di questo per scrivere ulteriormente un file mex che interagisce con l'hardware esterno. Per favore aiuto!Scrivere una funzione di mess estremamente semplice in 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; 

} 

// del file .m - test.m //

sprintf ('WELCOME') 
printing() 

quando ho eseguito il file test.m, mi piacerebbe vedere BENVENUTO NOME Tuttavia vedo solo benvenuto. Capisco che non ho aggiornato l'array plhs []. Ma tutto ciò che voglio fare è eseguire qualcosa all'interno di mexFunction. Perché il cout in name() e age() non otterrebbero questo?

Inoltre, come si conferma che name() e age() vengono eseguiti?

+1

Nota che cout è legata alla console del sistema e che Matlab ha una propria "console" che chiamano la "finestra di comando". Ciò significa che l'output cout non verrà visualizzato in Matlab. – patrik

risposta

5

La chiamata a cout non verrà stampata sulla console MATLAB, è necessario utilizzare la funzione MEX printf.

mexPrintf("NAME\n"); 
+0

Grazie mille! – Learner

Problemi correlati