2012-03-15 8 views
0

を実行しようとしていると言うので、関数を呼び出すことはできません{code}Matlabのは、それは私が私のように見えるiReadImageという関数を定義し、MATLABでスクリプト

私は何時間も使用していましたが、すべてうまく動作するように見えましたが、私は1行を変更しました。それは常に私に語った:関数としてSCRIPT iReadImageを実行するための

試み:

/home/.../iReadImage.m

を、私はそれが0KBであることを述べているファイルを見てみると...なぜなら、私はあらゆるものを試してみて、新しい機能にその機能をコピーし、他のPCで試してみてもコンピュータを再起動しました。私は同じエラーメッセージが出るまで、2,3回それは再び働くように思えましたが、決して長くはありませんでした。

+0

私は単純な関数を定義しようとしました。function out = ImPro(a)out = a + 1;私は他の機能と同じ場所にそれを保存し、同じことがここで起こった!機能を保存したいフォルダに問題はありますか? – Danny

+0

どのように関数を呼び出していますか?適切なパラメータを送信していますか?おそらく[こちら](http://www.mathworks.com/support/solutions/en/data/1-18IIZ/)を試してみてください。 – Zeina

+0

iReadImage( 'path of image')やImPro(2)のような関数を呼び出しても機能しません。最も疑わしいのは、ファイルを保存してファイルを閉じ、再度ロードするとファイルが空であるということです。 – Danny

答えて

0

作業ディレクトリを変更した可能性があります(例:cdなど)。現在の作業ディレクトリ、またはpathにリストされているディレクトリにある関数のみを実行できます。

確認するには、which iReadImageと入力してください。

+0

私はすでにどのiReadImageを試していて、それは現在のフォルダーにあります。私はそれが働いていたと言ったように、私は道を変更しませんでした。しかし、今、私はデスクトップにファイルを保存し、再び動作します。 – Danny

+0

私はナッツを得ています。すべてがうまくいきましたが、コードに次の行を追加しました:scarotim = imresize(rotim、outsize/insize); figure(1); image(scarotim);そして今私は同じshを得る..以前と同じように、私はファイルを削除し、これらの行を削除し、それを新しい保存しましたが、再び動作しません! – Danny

0

私の推測では、matlabがスクリプトと関数を検索するディレクトリに複数のiReadImageファイルがあると思います。もしそうなら、それはMatlabが間違ったもの(おそらくそれにエラーがあるもの)を見つけてそれを実行しようとするようなものです。

ファイルが1つだけであることを確認してください(Matlabが検索するディレクトリをpathで確認してください)。

Matlabがあなたの関数を実行するディレクトリを調べるには、which <filename>、つまりあなたのケースではwhich iReadImageと書いて、正しいファイルが使用されていることを確認してください。

which iReadImage -allを使用して、すべてのiReadImageファイルを検索することもできます。

+1

私はどちらがを試しましたが、この1つのファイルしかありません。私が気にすることは、ファイルを保存した後、ファイルのサイズが0バイトであるということです。 – Danny

+0

さて、あなたが参照している0バイトのファイルは.mファイルだと思いますか?もしそうなら、メモ帳(またはLinuxシステムを実行していると思われるので、他のテキストエディタ)でチェックしてください: – Niclas

+0

はい、.mファイルです。はい、私はメモ帳でそれをチェックし、それは空です。 (私は現時点でLinuxとWindowsの両方を実行しました...同じ問題が発生しました) – Danny

0

Matlabは、その機能をどのように構築できるかについて非常に特有です。 functionname.mファイルは、最初の行関数[output] = functionname(input)で始まる必要があります。それ以外の場合は、関数ではなくスクリプトを処理しているとみなされます。あなたのファイルがスクリプトである場合、MATLABは、このような関数宣言を許可していない、

function y = f(x) 

    y = g(x) + 2; 

    function z = g(x) 
    z = x.^2; 
    end 

end 

しかし:あなたのファイルが関数の場合はさらに、次のような、その中で宣言することができます。これをテストする1つの方法は、既存のスクリプトを(入力と出力がnullの関数でラップすることによって)関数にすることと、同じエラーが発生するかどうかを確認することです。

関連する問題