作为一个起点,我会注意到我的java技能非常有限。
到目前为止,我已经成功地链接了项目,库和来源。我相信我的问题的答案在于使用'getter setters',尽管java文档非常难以理解(术语)。
我已经看到其他类似但没有包含调用Matlab函数的问题,这可能使这成为一个新问题(因为它只涉及最新的Matlab版本)。我已尝试设置这些,但无法访问输出。
我在Matlab 2017a和Eclipse之间共享这些信息时遇到了一些困难。我可以使用Eclipse来触发Matlab函数(My_Function .Code_1)。可以在Eclipse控制台上看到输出,但是,我无法在Code_2中访问它。
有没有办法在Eclipse工作区中使用Matlab的输出?
Code_1 -----
package sicktodeath;
import com.mathworks.engine.MatlabEngine;
public class Call_Mat_two {
public static void main(String[] args) throws Exception {
String[] engines = MatlabEngine.findMatlab();
MatlabEngine eng = MatlabEngine.connectMatlab(engines[0]);
// Function Input
eng.putVariable("Input_Var", 0.00045);
// Run function => Calls the matlab function and provides output
eng.eval("[Function_Output] = My_Function(Input_Var);");
// Function Output => I cannot access this variable from another Java main method
double Function_Output = eng.getVariable("Function_Output");
hype myList = new hype();
myList.set_Value(10); //set n value
double currentN = myList.get_Value(); //get n's current value
eng.close();
}
}
OR
Code_2 ---
package sicktodeath;
import sickofit.Memes;
public class hype extends Call_Mat_two {
public static double n;
public static void main(String[] args) throws Exception {
// This calls the main method which triggers the Matlab function
Call_Mat_two.main(args);
System.out.println("Complete");
}
public double get_Value() {
return n;
}
public void set_Value(double n) {
this.n = n;
}
}
答案 0 :(得分:0)
您对此行的评论表明您已走上正轨,但您误解了Java程序的结构:
double Function_Output = eng.getVariable("Function_Output"); // I cannot access this variable from another Java main method
问题似乎在于您构建项目的方式。您的main
方法不应该处理这样的事情,但应该将其委托给其他方法或类。
public class Foo {
MatlabEngine engine;
public Foo() {
//get an instance of MatlabEngine, assign it to engine
//do whatever other setup you need to do
}
public static void main(String[] args) {
new Foo().doStuff();
}
public void doStuff() {
System.out.println(engine.getVariable("Function_Output")); // note that you haven't needed to declare engine in this method scope
}
}
进行一些谷歌搜索并阅读有关构造函数,对象和实例变量的内容。