2016-06-17 18 views
1

これは、私が以前のStackOverflow投稿(Undefined function in MATLAB)で尋ねたのと同様の質問です。MATLABの未定義プライベート関数

基本的には、最新のMATLABリリースで関数dtwを使用していますが、いくつかの部分を調整したいと思います。開始するには、私は、型付き:

edit dtw 

を私はdtw_Copy.mというファイルに結果のコードを保存し、同様にdtw_Copyに関数の名前を変更しました。

Undefined function 'dtwmex' for input arguments of type 'double'. 

は、私も、私は線でコード行を通過していない場合は、このエラーメッセージを取得し、単に:入力パラメータxyのセットで線でコード行を通って行く、私はエラーメッセージが表示されます。入力パラメータxyのセットを再度テストした後にタイプdtw_Current(x,y)と入力します。ランニング時に

は:

help 'dtwmex' 

dtwmexが発見されていないことが示されています。

edit 'dtwmex' 

だがはcurrentDirectory/dtwmex.mが存在しないと言われています:私も試してみました。

オンラインで検索すると、エラーが発生しました。このエラーはトラブルシューティングでa resource that seemed straight-forwardです。リソースは、ツールボックスがインストールされていることを確認することを推奨します。どのツールボックスが機能dtwmexをサポートしているのかわかりませんので、websiteに関数名を入力します。この結果、「あなたの検索 - dtwmex - はどのドキュメントにも一致しませんでした」というメッセージが表示されます。

リソースには、関数へのアクセスに使用されたパスの検証も推奨されます。私はそうする指示に従った、と私はタイプされたとき:

which -all dtwmex 

私が受け取る:

currentDirectory\matlab\toolbox\signal\signal\private\dtwmex.mexw64 % Private to signal 

これは、関数がプライベートである信号ツールボックス、であることを示しているようですか? dtw_Current(x,y)を実行したり、内容を1行ずつ実行したりする可能性はありますか?

dtwmex.mexw64ファイルを開いて、その内容をサブルーチンとして追加しようとしましたが(以前の質問の解決策と同じですが)、開くことはできません。

+2

あなたは私的な機能に遭遇するたびにこの質問をしますか? – excaza

+3

これは私の同様の最近の質問と重複しているとは思わない。今回のサブルーチンとしてプライベート関数からコードを追加することはできないようですので、前の投稿の解をここに複製することはできません。 – LAR

+2

ああ、答えの要点は、そうでなければアクセスできないので、私用フォルダからファイルをコピーすることでした。可能な "コピー"のすべてのバリエーションについて真剣に質問が必要ですか? – excaza

答えて

2

この機能は、ツールボックスのprivateフォルダにあるコンパイルされたmexファイルです。 private folders are special in MATLABとその内容はで、親ディレクトリのファイルからのみアクセスできます。あなたの場合、これは、toolbox/signal/signalフォルダに定義されている関数だけがこの関数を見つける/呼び出すことができることを意味します。このmexファイルにアクセスするには、実際には2つのオプションがあります。

  1. は、同様に信号処理ツールボックス]フォルダ内に変更した機能を保存し、privateフォルダを表示することができます。欠点は、MATLABのインストールを変更していることです。

  2. コピーは、外部関数(基本的にどこでもしかしprivateフォルダ)からアクセスであることをどこかにprivateフォルダ内に配置されている必要なファイル。

これらのどれも実際にはお勧めできません。