如何将Java对象作为参数传递给MATLAB函数?

时间:2009-03-19 14:51:17

标签: java matlab

我编写了一个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 个答案:

答案 0 :(得分:2)

当我写原始问题时,我意识到了我的错误。

显然,在Matlab类中,调用静态函数需要将封闭类预先添加到函数中......即使从同一个类中调用它也是如此!

我换了一行:

trials = zeros(numRecords(rs));

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

它有效。 (好吧它没有,但它至少称之为功能。)

这是一个令人困惑的错误消息,因为Matlab不应该被输入,但它听起来像是......

答案 1 :(得分:1)

您应该能够像在任何其他变量/对象中一样处理MATLAB中的Java对象。您可以像这样创建一个Java对象:

myDate = java.util.Date;

然后将该对象传递给函数:

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

有关详情,请查看MATLAB documentation

修改

可能不言而喻,但是你应该避免让函数 myFcn 与你传入的Java对象的任何方法相同(即重载 )。关于哪些重载函数实际被调用,事情会变得混乱,如this other questionmy answer所示。