2011-10-11 77 views
5

Tôi cần chuyển đổi một số mã MATLAB thành C++. Tôi đang sử dụng Visual Studio 2010 và đã cài đặt trình biên dịch MATLAB. Tôi tự hỏi làm thế nào để tôi đi về việc này.Chuyển đổi Matlab thành C++

Ngoài ra khi tôi xuất bản dự án của mình, người dùng cuối có phải cài đặt bất kỳ thứ gì của MATLAB không? (không thể là như vậy)

Trả lời

3

Bạn có thể compile Matlab scripts thành các tệp thực thi độc lập, nhưng tôi không quen với công cụ Matlab để chuyển đổi mã Matlab thành mã Visual C++. Bạn có thể chuyển đổi mã Matlab thành C hoặc C++ bằng cách sử dụng Simulink Coder (trước đây là Hội thảo thời gian thực), có sẵn từ Mathworks như một sản phẩm riêng biệt.

Để chạy chương trình thực thi độc lập, người dùng sẽ phải cài đặt Thời gian chạy trình biên dịch Matlab. Từ số Matlab Compiler web page:

Thực thi và thư viện được tạo bằng sản phẩm MATLAB Compiler sử dụng công cụ thời gian chạy được gọi là MATLAB Compiler Runtime (MCR). MCR được cung cấp với Trình biên dịch MATLAB để phân phối với ứng dụng của bạn và có thể được triển khai miễn phí bản quyền.

+0

Một thời gian dài trước đây, trình biên dịch MATLAB được sử dụng để dịch mã MATLAB thành C, nhưng nó đã không làm điều đó trong một thời gian. Ngày nay, nó chỉ chuyển đổi các tệp nguồn MATLAB (* .m) thành định dạng được phân tích cú pháp, trước khi phân tích cú pháp (.p), được đóng gói để nó có thể chạy dưới dạng thực thi độc lập hoặc được gọi từ chương trình khác. Dù bằng cách nào, máy mục tiêu mà nó sẽ được chạy sẽ cần phải cài đặt MCR từ phiên bản MATLAB mà ứng dụng đã được phát triển. –

+1

"nhưng tôi không nghĩ rằng có một công cụ Matlab để chuyển đổi mã Matlab thành mã C++ hoặc Visual C++" -Thông tin cơ bản: Có một công cụ Matlab và nó được gọi là hội thảo thời gian thực. Tuy nhiên, đây là một sản phẩm riêng biệt cho trình biên dịch Matlab và yêu cầu một giấy phép khác. – learnvst

+1

@learnvst - cảm ơn nhận xét, tôi đã cập nhật câu trả lời. – eykanal

0

Một tùy chọn khác mà bạn có là sử dụng MATLAB Engine. Nó có lẽ không phải là một lựa chọn cho các ứng dụng thời gian thực, nhưng nếu không nó thực sự tốt đẹp. Về cơ bản, bạn gọi hàm MATLAB ngay từ C++. Số liệu (lô) sẽ được hiển thị giống như khi bạn đang chạy MATLAB cục bộ. Khi chương trình bắt đầu, một bảng điều khiển MATLAB được tạo ra.

2

Bạn sẽ không loại bỏ các thời gian chạy Matlab. Tôi thường gặp vấn đề khi sử dụng Matlab Compiler. Về cơ bản nó giống như một trình bao bọc xung quanh thời gian chạy Matlab, tạo ra mã vụng về và đã giới thiệu nhiều vấn đề để triển khai. C lựa chọn thay thế ...? Tôi không thể tìm thấy bất kỳ. Vì vậy, gần đây tôi đã chuyển sang ilnumerics, giống như Matlab trong C# - chỉ nhanh hơn và không cần dịch. nó hoạt động tốt cho đến nay bởi vì chúng tôi sử dụng ASP.NET anyway và do đó tiết kiệm nhảy giữa các ngôn ngữ và có thể trực tiếp sử dụng các lô 3d của ilnumerics.

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