2016-06-01 18 views
5

Tôi đang cố viết một tệp mex rất đơn giản, giả sử chỉ để thử cách nó hoạt động. Tôi đã trải qua rất nhiều tài liệu và tôi đọc nhiều hơn, tôi càng bối rối. Tôi cần điều này để tiếp tục viết một tập tin mex tương tác với phần cứng bên ngoài. Hãy giúp tôi!Viết một hàm mex cực kỳ cơ bản trong 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 tập tin - test.m //

sprintf ('WELCOME') 
printing() 

Khi tôi chạy file test.m, tôi muốn nhìn thấy CHÀO MỪNG TÊN Tuy nhiên tôi thấy chỉ chào đón. Tôi hiểu rằng tôi đã không cập nhật mảng plhs []. Nhưng tất cả tôi muốn làm là thực hiện một cái gì đó bên trong mexFunction.Why sẽ không cout bên trong tên() và tuổi() đạt được điều này?

Ngoài ra, làm thế nào để tôi xác nhận rằng tên() và tuổi() được thực thi?

+1

Lưu ý rằng cout được liên kết với bảng điều khiển của hệ thống và Matlab có "bảng điều khiển" riêng mà chúng gọi là "cửa sổ lệnh". Điều này có nghĩa là đầu ra cout của bạn sẽ không được nhìn thấy trong Matlab. – patrik

Trả lời

5

Cuộc gọi tới cout sẽ không in tới bảng điều khiển MATLAB, bạn cần sử dụng chức năng printf MEX.

mexPrintf("NAME\n"); 
+0

Cảm ơn bạn rất nhiều! – Learner

Các vấn đề liên quan