使用Java程序調用Matlab

1.MATLAB中新建script,輸入如下內容

%畫圖 自定義函數drawplot 參數 x y  
    function drawplot(x, y)    
    plot(x, y); %%使用matlab函數plot()作圖    
    grid on %網格顯示  
    xlabel('X軸值')  
    ylabel('Y軸值')  
    title('Java調用MatLab作圖例子')


保存,本例保存目錄爲E:\Workspaces\matlab\test


2.在MATLAB的Command Window輸入deploytool命令(MATLAB版本:R2016a)


選擇Library Compiler,在彈出的窗口選擇Java Package,輸入Library name,Class name輸入plotter(java類,在後邊java代碼中會用)。點擊加號按鈕,添加剛纔的drawplot.m文件



完成之後,點擊右上角的package




3.打開MyEclipse,新建project命名爲mjTest,引用兩個jar包:D:\Program Files (x86)\MATLAB\R2016a\toolbox\javabuilder\jar下面的javabuilder.jar和上一步生成的demo.jar


新建ConnectMatlabTest.java

package mjTest;

import com.mathworks.toolbox.javabuilder.MWArray;  
import com.mathworks.toolbox.javabuilder.MWClassID;  
import com.mathworks.toolbox.javabuilder.MWComplexity;  
import com.mathworks.toolbox.javabuilder.MWNumericArray;  
  
import demo.plotter;  
  
public class ConnectMatlabTest {  
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        MWNumericArray x = null; // 存放x值的數組  
        MWNumericArray y = null; // 存放y值的數組  
        plotter thePlot = null; // plotter類的實例(在MatLab編譯時,新建的類)  
        int n = 20; // 作圖點數  
  
        try {  
            // 分配x、y的值  
            int[] dims = { 1, n };  
            x = MWNumericArray.newInstance(dims, MWClassID.DOUBLE,  
                    MWComplexity.REAL);  
            y = MWNumericArray.newInstance(dims, MWClassID.DOUBLE,  
                    MWComplexity.REAL);  
  
            // 定義 y = x^2  
            for (int i = 1; i <= n; i++) {  
                x.set(i, i);  
                y.set(i, i * i);  
            }  
  
            // 初始化plotter的對象  
            thePlot = new plotter();  
  
            // 作圖  
            thePlot.drawplot(x, y);  
            thePlot.waitForFigures();  
        }  
  
        catch (Exception e) {  
            System.out.println("Exception: " + e.toString());  
        }  
  
        finally {  
            // 釋放本地資源  
            MWArray.disposeArray(x);  
            MWArray.disposeArray(y);  
            if (thePlot != null)  
                thePlot.dispose();  
        }  
    }  
  
}  

運行 Run As--Java Application


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章