#java #matlab
#java #matlab
Вопрос:
Отсюда это не очевидно http://www.cs.virginia.edu /~whitehouse/matlab/JavaMatlab.html , как использовать MatlabControl
класс.
С одной стороны, приведен пример:
Сначала создайте экземпляр объекта MatlabControl
MatlabControl mc = new MatlabControl();
С другой стороны, сказано
Проблема 1: объекты MatlabControl должны создаваться из вашего сеанса Matlab! (или другими объектами Java, которые были созданы вашим сеансом matlab). Это потому, что Matlab запускает свою собственную JVM, и вам нужно запустить MatlabControl в той же JVM, которую использует matlab. (вот почему вам нужно убедиться, что MatlabControl находится в вашем пути к классу matlab.) Более конкретно, если ваша программа определена в «mypackage/MyClass.java «, вам нужно набрать
mypackage.MyClass.main({‘param1’, ‘param2’, …})
Что правильно? Где выполнить
MatlabControl mc = new MatlabControl();
?
В моем коде Java?
Или в командной строке matlab?
Комментарии:
1.
new
Ключевое слово отсутствует, поэтому вы не можете выполнить его в окне командной строки Matlab. Вы можете поместить это в свою Javamain
, а затем вызвать свой пакет из окна командной строки, как указано:mypackage.MyClass.main({'param1','param2',...})
2. Что значит «вызвать мой пакет из окна командной строки»? Предположим, мне нужно выполнить
a=a 1
. Какой пакет я должен вызвать?3. Хм, я думаю, что перед ответом нам нужно прояснить вопрос. 1) Вы хотите оценить материал MATLAB из Java, верно? 2) Чтобы выполнить наборы состояний MATLAB из Java, вам нужно создать (в Java)
MatlabControl
объект, скажемmc
, а затем вызвать его методы, напримерmc.eval('a=a 1')
, правильно? 3) Чтобы работать на той же виртуальной машине Java, что и MATLAB, ваши объекты Java — те, которые, в свою очередь, создаютMatlabControl
объекты для оценки операторов MATLAB — должны быть созданы из MATLAB. То, что вы написали, похоже на общий пример.4. Если я создам какой-либо корневой объект из Matlab, то я не получу никаких преимуществ matlab в java, потому что я останусь в matlab. Мне нужно оставаться на Java, но вызывать оттуда процедуры matlab. Возможно ли это?
5. Я не пробовал, но в последней версии MatlabControl утверждается, что это возможно: code.google.com/p/matlabcontrol/wiki/Walkthrough в разделе «Введение». Однако предлагаемый шаблон кода для выполнения MATLAB в Java отличается от того, что вы написали.