Вызов matlab обратный вызов/указатель на функцию от Java

Ответы на на этот похожий вопрос предлагают использовать класс Formatter или StringUtil.substitute () .

Последний выглядит самым простым; в вашем случае вы бы использовали его так:

var str:String = "One {0} consists of {1} consecutive {2}";
var newString:String = StringUtil.substitute(str, myObject, myNumber, myString);

substitute() должен автоматически привести свои аргументы к String, но я не уверен, что, как в вашем коде, вы можете привести MovieClip (myObject) в виде строки.

Другой хороший вариант, особенно если вы использовали printf в других языках программирования, это сторонняя функция printf-as3 .

6
задан 17 June 2009 в 08:49
поделиться

4 ответа

Hmm. Looks like JMI is one of those matlab internals things which may be subject to change in future versions. I found these online articles, not sure if they will help in your case.

2
ответ дан 17 December 2019 в 07:08
поделиться

Боюсь, что я не знаю способа сделать точно то, что вы просили, но есть два способа сделать что-то похожее:

1) Если вы устанавливаете обратный вызов Java из Matlab, вы можете послать ему хэндл функции Matlab. Когда событие обратного вызова Java будет поднято, будет вызвана ваша функция Matlab. Пример этого можно найти здесь: http://UndocumentedMatlab.com/blog/uicontrol-callbacks/. Обратите внимание, что для этого не требуется JMI.

2) JMI требует строку (имя функции или командную строку) для оценки Matlab. Если вы заранее знаете имя функции, вы можете использовать его. В противном случае, вы можете подготовить функцию-переключатель Matlab (имя которой известно заранее), чтобы динамически направить ваш обратный вызов на соответствующее действие Matlab.

Я планирую опубликовать статью о JMI на сайте http://UndocumentedMatlab.com в середине апреля, так что следите за новостями...

Яир Альтман

1
ответ дан 17 December 2019 в 07:08
поделиться

Чтобы передать обратный вызов в matlab, вы передаете имя функции matlab и ее аргументы в com.mathworks.jmi.Matlab.feval("matlabControlcb", ... , 0); ... - это Object[], где [0] = команда и [1...end]=аргументы.

См. также: FEVAL FUNC2STR

0
ответ дан 17 December 2019 в 07:08
поделиться

попробуйте этот инструмент: http://jamal.sourceforge.net/

Он делает именно то, что вам нужно, и хорошо документирован.

Главный принцип, на котором он основан, - это вызов RMI к серверной части, которая выполняется внутри Matlab. Результат возвращается в Java-программу. Опять же, это зависит от jmi ...

0
ответ дан 17 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: