主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

在 MATLAB 应用程序中使用 Java 类

R2026a

概述

此示例向您说明如何创建一个调用 Java® 类的 MATLAB® 包装器函数的 MATLAB 应用程序。

在此示例中,您执行以下步骤:

  1. 使用 MATLAB Compiler SDK™ 创建一个使用 MATLAB 包装器函数访问 MATLAB 类的包。

  2. 在 MATLAB 应用程序中调用 Java 包装器函数。

  3. 构建并运行应用程序。

过程

  1. 在 MATLAB 中,检查您想要打包的 MATLAB 代码。对于此示例,使用以下代码创建一个名为 MyMATLABClass.m 的 MATLAB 类:

    classdef MyMatlabClass < handle
        
        properties (Access = private)
            x % input variable
            y % input variable
            z % result variable
        end
        
        methods
            function this = MyMatlabClass()
                this.x = []; this.y = [];
            end
            
            function setInput(this, input)
                input = input(:);           
                if isnumeric(input) && numel(input) == 2
                    this.x = input(1);
                    this.y = input(2);
                end
            end
            
            function result = getResult(this)
                result = this.z;
            end
            
            function status = compute(this)
                try
                    this.z = (this.x.^2 + this.y.^2)^0.5;
                    status = true;
                catch
                    status = false;
                end
            end
        end
        
    end
  2. 为该类创建四个 MATLAB 包装器函数:CreateMyMATLABClass.m、SetInput.m、Compute.m 和 GetResult.m。

    CreateMyMATLABClass.m.  

    function instance = CreateMyMATLABClass()
        instance = MyMATLABClass();
    end

    SetInput.m.  

    function SetInput(myclass, input_value)
        myclass.setInput(input_value);
    end

    Compute.m.  

    function status= Compute(myclass)
        status = myclass.compute();
    end

    GetResult.m.  

    function result = GetResult(myclass)
        result = myclass.getResult();
    end

  3. 使用以下信息构建 Java 包,可通过 Java 包编译器应用或 compiler.build.javaPackage 进行操作:

    字段值
    Java 包名称MyMATLABClass1
    类名Class1
    要编译的文件CreateMyMATLABClass.m
    SetInput.m
    Compute.m
    GetResult.m

    例如,如果您使用的是 compiler.build.javaPackage,请输入:

    buildResults = compiler.build.javaPackage(["CreateMyMATLABClass.m", ...
    "SetInput.m","Compute.m","GetResult.m"], ...
    'PackageName','MyMATLABClass1', ...
    'ClassName','Class1');

    有关详细信息,请参阅生成 Java 包并编译 Java 应用程序中的说明。

    注意

    您不需要手动将 MyMATLABClass.m 文件添加到包中,因为编译器会在依赖关系分析期间自动将其包含进去。

  4. 导航到包含生成的 MyMATLABClass1.jar 包的文件夹。如果您使用了 Java 包编译器,该包位于 build 文件夹中。

  5. 为访问 MATLAB 函数的应用程序编写源代码。此示例的代码如下所示。

    /* Necessary package imports */
    import com.mathworks.toolbox.javabuilder.*;
    import java.util.*;
    import MyMATLABClass.*;
    
    class javadriver
    {
    	public static void main(String[] args)
    	{
    		try
    		{			
    			System.out.println("--- USE: Constructors ---");
    			/* Instantiate a new Java object */
    			/* This should only be done once per application instance */
    			MyMATLABClass1.Class1 obj = new MyMATLABClass1.Class1();
    			
    			Object[] a = obj.CreateMyMATLABClass(1);
    			obj.SetInput(a[0],new double[]{1,2});
    			Object[] b = obj.Compute(1,a[0]);
    			System.out.println( (MWLogicalArray) b[0]);
    			Object[] c = obj.GetResult(1, a[0]);
    			System.out.println((MWNumericArray)c[0]);        
    			System.out.println("--- Done. ---");
    		}
    		catch (Exception e)
    		{
    		System.out.println("Exception: " + e.toString());
    		}    	
    		finally
    		{
    		}
    	}
    }
  6. 打开命令提示符窗口并导航到包含 javadriver.java 和 MyMATLABClass.jar 文件夹。

  7. 使用 javadriver.java 编译 javac 应用程序。

    • 在 Windows® 上,键入:

      javac -classpath "matlabroot\toolbox\javabuilder\jar\javabuilder.jar";.\MyMATLABClass.jar javadriver.java

    • 在 UNIX® 上,键入:

      javac -classpath "matlabroot/toolbox/javabuilder/jar/javabuilder.jar":./MyMATLABClass.jar javadriver.java

    将 matlabroot 替换为 MATLAB 或 MATLAB Runtime 安装文件夹的路径。例如,对于 Linux®,路径可能是 /usr/local/MATLAB/R2026a。

  8. 运行 javadriver 应用程序。

    在 Windows 上,键入:

    java -classpath .;"matlabroot\toolbox\javabuilder\jar\javabuilder.jar";.\MyMATLABClass.jar javadriver

    在 Linux 上,键入:

    java -classpath .:"matlabroot/toolbox/javabuilder/jar/javabuilder.jar":.\MyMATLABClass.jar javadriver

    注意

    如果您在 Mac 64 位平台上运行该应用程序,则必须在 Java 命令中添加 -d64 标志。

javadriver 程序显示以下输出:

--- USE: Constructors --- 
1 
2.2361 
--- Done. --- 

另请参阅

|

主题