2017-06-08 14 views
1

DataMatrix()関数を呼び出してDataMatrix変数を作成しようとしました。 しかし、その関数は存在しません。私はこのタイプの場合:未定義の関数または変数 'DataMatrix'

>> DataMatrix 

を私は、このエラーメッセージました:

Undefined function or variable 'DataMatrix'. 

を私はバイオインフォマティクスツールボックスと私のバージョンをインストールしたMacの

上2016Bは、任意のアイデアですか?

+1

唯一の説明は、ツールボックスが正しくインストールされていないということです([MATLABパス](https://www.mathworks.com/help/matlab/matlab_env/what-is)にないなど) -the-matlab-search-path.html))。もっと情報なしであなたを助けることはあまりありません。 – gnovice

+2

@gnovice偶然かもしれませんが、私は彼の誤りを再現することができます。 'exist'を使うと' 0'も得られます。タブを使用して名前を入力すると、私に何も与えません。さらに、 'Help DataMatrix'は' DataMatrixが見つかりませんでした 'を示しますが、 'doc DataMatrix'はそのドキュメントを開きます。私はまた、このエラーを 'dmarrayfun'、' dmwrite'などのBioinformatics Toolboxの他の機能で再現することができます。(Win10のR2016a) –

+3

私は再投票することに投票しました。これは正当な質問です。 "未定義関数"または "ひどくインストールされたパッケージ"です。 DataMatrixクラスは "Package"/Namespaceで囲まれており、それに応じてアクセスする必要があります。私のインストールでは 'bioma'パッケージです。このパッケージにはクラスを含む' data'サブパッケージが含まれています。インスタンスを作成するには、 'D = bioma.data.DataMatrix([1,2,3,4])'または 'import bioma.data.DataMatrix'' D = DataMatrix([2,3 ; 4,5]) '。あなたのものは同じである可能性が高いですが、場合によってはインストールを確認してください。再開された場合、私は詳細を述べます。 –

答えて

4

コメントに記載されているように、このクラスをインポートして使用する手順は、すでにmentioned in the documentation for the classです(構文を扱うページの上部に表示されていないため、紛失している可能性があります)。その後、最初のパッケージ/名前空間から

D = bioma.data.DataMatrix(...); 

または、importクラスを、と:;


TLのDRバージョンを使用すると、例えば、としてクラスのコンストラクタにアクセスする必要がありますどちらかということです直接使用してください:

import bioma.data.DataMatrix; 
D = DataMatrix(...); 

このクラスは、「パッケージ」の内部に封入されているためである(別称、説明

あなたが最初の場所でこのステップを必要とする理由は、 「名前空間」)。これが何を意味するのかについては、MATLABのドキュメントの "Packages Create Namespaces"を参照してください。

しかし、原理的には、名前に+という接頭辞を持つフォルダがある場合、これは内部に含まれる関数の名前空間として機能します。

myfunction.mと呼ばれる(これはあなたのパスにない)フォルダがパスに+MyPackageと呼ばれている、これは、関数M-ファイルが含まれているのであれば、あなたはMyPackage.myfunction()を入力することで、MATLAB端末にこの機能にアクセスすることができます。

またはの場合は、そのパッケージ/名前空間からimport MyPackage.myfunctionを直接入力してから、myfunctionを直接使用してください。

ので、バックDataMatrixに行く、あなたはクラス定義は、あなたのMathWorks社のMATLABフォルダに配置されている場所あなたが検索した場合、あなたはここでそれを見つけることがわかります。

./toolbox/bioinfo/microarray/+bioma/+data/@DataMatrix/DataMatrix.m 

そしておそらく./toolbox/bioinfo/microarrayあなたに既にありますパス。

I.e. biomaパッケージ/名前空間がパスにあり、その下のdataパッケージ/ネームスペースにアクセスしてからのクラス定義をbioma.data.DataMatrixとすることでアクセスできます。


PS:また、フォルダ名の前に「@」プレフィックスがコンストラクタとクラスメソッドを含む、クラスのフォルダを示しています。この "@folder"があなたのパス(またはインポートされたものなど)にある場合、これは基本的なコンストラクタにアクセスできることを意味します。これは、キーワードが導入される前の、matlab's old object-oriented styleの残りです。興味があれば、クラスディレクトリhereの詳細を読むことができます。

+1

ありがとうございました!あなたの import bioma.data.DataMatrix; 私が探していたもの –

関連する問題