1

MATLAB から実行したい Fortran コードの実行可能ファイルがあります。

次の 2 つのオプションを使用してみましたが、エラーが発生しました。

!/home/atrac/code case172.jcl
error:- ls: cannot access ./id: No such file or directory
ls: cannot access ./id: No such file or directory

!gnome-terminal --command "./home/myhome/code case12.jcl"
error: There was an error creating child process for this terminal

プログラムを実行し、外部プログラムが実行されるまで Matlab を一時停止してから、コントロールを Matlab に戻すシェル スクリプトを作成する方法はありますか?

この外部ソフトウェアを呼び出すMatlabで遺伝的アルゴリズムを実行しようとしています。どんなアイデアや助けも大歓迎です。

ありがとう、ヤシュ

4

3 に答える 3

1

さて、ここでは 2 つの異なることが起こっているようです。どちらもおそらく Matlab の現在のディレクトリに関連しています。

!/home/atrac/code case172.jcl
error:- ls: cannot access ./id: No such file or directory
ls: cannot access ./id: No such file or directory

codeここでは、プログラムの実行に成功しているように見えますが、JCL スクリプトは現在の作業ディレクトリで名前がcode付けられたファイルを探しています。idMatlab からシェル アウトすると、それが Matlab の現在のディレクトリになります。Matlab コマンド プロンプトから実行pwdして、現在の場所を確認します。おそらくこれを修正するcdには、Matlab を使用してidファイルが実際に存在するディレクトリ (/home/atrac にあると思います) に移動codeし、同じコマンド ラインを使用して実行します。より良い修正はcode、任意のパスから (おそらく絶対パスを使用して) 実行されたときに JCL スクリプトを書き直すか、動作するようにすることです。そのため、cwd は重要ではありません。

!gnome-terminal --command "./home/myhome/code case12.jcl"
error: There was an error creating child process for this terminal

ここで、先頭の「。」home/myhomeルートディレクトリの下ではなく、現在の作業ディレクトリの下を探しているため、おそらくそれを台無しにしています。!gnome-terminal --command "/home/myhome/code case12.jcl"代わりに(「。」なしで)やってみてください。

于 2013-08-09T04:28:30.807 に答える
1

理想的には、これはコメントとして行われるべきですが、私には十分な評判がありません.

それにもかかわらず、子プロセスの作成に関するエラーは MATLAB とは関係ありません。シェルでエラーが発生しています。端末からプログラムを実行できますか?

第二に、あなたは以下を使用しています:

!/home/atrac/code case172.jcl 

ただし、 !./home/atrac/code case172.jcl を使用する必要があります

于 2013-08-07T15:24:30.910 に答える
0

そのファイルを含むフォルダーが、MATLAB に表示される UNIX システム パス上にない場合、MATLAB から UNIX プログラムを実行できます。MATLAB に表示されるシステム パスを特定するには、コマンド ウィンドウに次のように入力します。

getenv('パス')

以降のセクションで説明するように、現在の MATLAB セッションまたは後続の MATLAB セッションで保持されるシステム パスを変更できます。

現在の MATLAB セッションのシステム パスを変更します。次のいずれかを実行します。

Change the current folder in MATLAB to the folder that contains the program you want to run.

Issue these commands using the Command Window:

path1 = getenv('PATH')
path1 = [path1 ':/usr/local/bin']
setenv('PATH', path1)
!echo $PATH 

MATLAB を再起動すると、フォルダーは MATLAB から見えるシステム パス上になくなります。

http://www.mathworks.com/help/matlab/matlab_env/creating-opening-ching-and-deleting-files-and-folders.html#f0-38522

于 2013-08-08T13:44:39.470 に答える