2009-03-19 17 views
1

私はJDBCとjava.sqlのものを使ってデータベースを実装するMatlabクラスを書いています。JavaオブジェクトをパラメータとしてMATLAB関数に渡すにはどうすればよいですか?

私は、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

元の質問を書いていたとき、私はエラーを認識しました。

明らかに、Matlabクラスでは、静的関数を呼び出すには、同じクラス内から呼び出されたときでも、囲むクラスを関数の前に追加する必要があります。

私はラインに置き換え:

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

trials = zeros(numRecords(rs)); 

をし、それが働きました。 (まあ、それはしませんでしたが、それは少なくとも、関数を呼び出した。)

のMatlabが入力されるように想定されていないので、それは紛らわしいエラーメッセージだが、それはそれがあるようにそれが聞こえる...

+0

@ジム、あなたがダースにあなたの問題を伝えるとよく起こります。 http://stackoverflow.com/questions/612537/why-is-it-that-properly-formulating-your-question-for-stackoverflow-often-yield/612555#612555 –

1

他の変数/オブジェクトと同様に、MATLAB内のJavaオブジェクトを扱うことができるはずです。

myDate = java.util.Date; 

をして、関数にそのオブジェクトを渡します:あなたはこのようにJavaオブジェクトを作成することができます

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

詳細情報については、あなたはMATLAB documentationをチェックアウトすることができます。

EDIT:

それは言わずに行くかもしれませんが、Java用のいずれかの方法は、あなたがに渡しているオブジェクトとして使用すると、機能myFcn同じ名前を与えないようにする必要があり(つまりをオーバーロード) 。オーバーロードされた関数が実際に呼び出される点に関しては、this other questionmy answerのように混乱することがあります。

+0

ありがとうございました。私は質問者をこの質問に戻すつぶやきを投稿しました! – jbdavid

+0

喜んで助けてください! =) – gnovice

関連する問題