2009-10-22 38 views
11

Tôi có tệp .m trong MATLAB mà tôi muốn gọi từ Java để nhận giải pháp dưới dạng chuỗi hoặc bất kỳ thứ gì trong Java. Điều này nghe có vẻ rất đơn giản nhưng vì một lý do nào đó tôi không thể làm cho nó hoạt động được.Chạy hàm MATLAB từ Java

Tôi cố gắng này:

matlab -nosplash -wait -nodesktop -r myFunction 

nhưng tôi không chắc chắn làm thế nào tôi phân tích câu trả lời từ MATLAB mở nó dòng lệnh riêng (trong Windows).

Tôi sử dụng tính năng này nhưng không trả lại bất kỳ thứ gì.

Process p = Runtime.getRuntime().exec(commandToRun); 
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); 

cũng có vẻ như mỗi khi tôi gọi MATLAB, nó sẽ mở ra một cửa sổ riêng biệt, đó là vấn đề vì tôi muốn chạy nhiều lần.

+0

có thể tùy chọn lệnh '-logfile' có thể giúp: http://stackoverflow.com/questions/1518072/suppress-start-message-of-matlab/1518165#1518165 – Amro

Trả lời

7

Bí quyết là sử dụng lớp MatlabControl http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html. Nó rất dễ sử dụng và bạn có thể làm chính xác những gì bạn đang cố gắng làm (và nhiều hơn nữa).

+0

Jeff! Rob! Rất vui được gặp các bạn ở đây. –

+0

Thế giới nhỏ, phải không? –

0

Có tồn tại một Java-COM-Bridge tốt được gọi là JaCoB (http://sourceforge.net/projects/jacob-project/) mà bạn có thể sử dụng để tự động khởi động Matlab làm máy chủ COM ở chế độ nền. Sau đó, bạn có thể làm theo hướng dẫn trong phần trợ giúp Matlab để tương tác với Giao diện COM Matlab.

Mặc dù đây là một giao diện rất chung chung, nó cung cấp đủ tính linh hoạt để dễ dàng thực hiện một vài cuộc gọi đến Matlab như trong trường hợp của bạn.

Chỉ cần tải xuống gói JaCoB và tìm trong thư mục tài liệu cho một số tài liệu. Bạn cũng phải bao gồm Jacob DLL trong đường dẫn của bạn.

7

matlabcontrol được dựa trên cùng thư viện MATLAB cơ bản được MatlabControl sử dụng được đề cập bởi Jeff, nhưng được cập nhật, đáng tin cậy và được ghi lại. Để bắt đầu, hãy xem walkthrough.

2

JAMAL là một mã nguồn mở, Java RMI-based (Java Remote Method Invocation API) thư viện phù hợp với nhu cầu của bạn

+0

Liên kết này không hoạt động. – user1850484

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