Как передать объект Java в качестве параметра функции MATLAB? - PullRequest
1 голос
/ 19 марта 2009

Я написал класс Matlab для реализации базы данных с использованием JDBC и прочего из java.sql.

Мне нужно знать, сколько результатов было в ResultSet, поэтому я написал следующую статическую функцию Matlab:

methods (Static)

    function [numRecords] = numRecords(resultSet)
        numRecords = 0;
        if (~isempty(resultSet))
            row = resultSet.getRow();
            resultSet.beforeFirst();
            resultSet.last();
            numRecords = resultSet.getRow();
            resultSet.absolute(row);
        end
    end

end

Но когда я пытаюсь вызвать его, я получаю следующее сообщение об ошибке:

??? Неопределенная функция или метод 'numRecords' для входных аргументов типа 'org.apache.derby.impl.jdbc.EmbedResultSet40'

Других функций с именем numRecords нет.

Ответы [ 2 ]

2 голосов
/ 22 марта 2009

Когда я писал оригинальный вопрос, я осознал свою ошибку.

Очевидно, что в классе Matlab для вызова статической функции требуется, чтобы перед функцией был добавлен включающий класс ... даже при вызове из этого же класса!

Я заменил строку:

trials = zeros(numRecords(rs));

с

trials = zeros(CMAPSigSimResultsDB.numRecords(rs));

и это сработало. (Ну, это не так, но это вызвало функцию по крайней мере.)

Это сбивающее с толку сообщение об ошибке, поскольку Matlab не предполагается печатать, но оно звучит так, как будто это ...

1 голос
/ 19 марта 2009

Вы должны иметь возможность обрабатывать Java-объект в MATLAB точно так же, как любую другую переменную / объект. Вы можете создать объект Java следующим образом:

myDate = java.util.Date;

, а затем передать этот объект в функцию:

myFcn(myDate,...other input arguments...);

Для получения дополнительной информации вы можете ознакомиться с документацией MATLAB .

EDIT:

Само собой разумеется, но вам следует избегать присвоения функции myFcn того же имени, что и любому из методов для объекта Java, который вы передаете (т.е. перегрузка ). Вещи могут запутаться в отношении того, какая перегруженная функция действительно вызывается, как показано этим другим вопросом и моим ответом на нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...