2016-06-01 4 views
5

Ich versuche, eine sehr einfache mex-Datei zu schreiben, sagen wir mal, nur um zu versuchen, wie es funktioniert. Ich habe viele Materialien durchgelesen und mehr gelesen, mehr verwirrt. Ich brauche das, um weiter eine mex-Datei zu schreiben, die mit externer Hardware interagiert. Bitte helfen Sie!Schreiben eine extrem grundlegende mex-Funktion 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; 

} 

// .m-Datei - test.m //

sprintf ('WELCOME') 
printing() 

Wenn ich die test.m Datei ausführen, würde Ich mag WILLKOMMEN NAMEN um zu sehen, aber ich nur sehen herzlich willkommen. Ich verstehe, dass ich das plhs [] Array nicht aktualisiert habe. Aber alles, was ich tun möchte, ist, etwas innerhalb von mexFunction auszuführen. Warum würde der Cout innerhalb von name() und age() das nicht erreichen?

Wie bestätige ich auch, dass name() und age() ausgeführt werden?

+1

Beachten Sie, dass cout mit der Systemkonsole verbunden ist und dass Matlab eine eigene "Konsole" hat, die sie das "Befehlsfenster" nennen. Das bedeutet, dass Ihre Cout-Ausgabe nicht in Matlab angezeigt wird. – patrik

Antwort

5

Der Aufruf von cout wird nicht auf der MATLAB-Konsole gedruckt, Sie müssen die MEX printf-Funktion verwenden.

+0

Vielen Dank! – Learner