2017-01-20 9 views
1

私はシミュレーションを実行するために外部ソルバーを使用しています。 MATLABスクリプトからシステム(cmd)を使って外部ソルバーを呼び出そうとしています。 cmd自体は問題なくターミナルから問題なく実行されます(私はOSX上で動作しています)。ただし、MATLABスクリプトが実行されるたびに、状態は139 - Segmentation Faultです。なぜこれが起こっているのか誰にも分かりますか?MATLABシステムコマンドでセグメンテーションフォルトが発生しますか?

+1

本当に分かりにくいです。 MATLABではなく外部プログラムの問題です。外部プログラムが依存する環境変数がありますか? – Suever

+0

はい、私のホームディレクトリには特定の環境変数があります.bash_profile – jfherrm

+0

これは、MATLABから 'system'コマンドを実行したときに尊重されるものではありません。必要な環境変数を設定するには 'setenv'を使う必要があります – Suever

答えて

1

これはあなたがおそらく環境変数は、プログラムへのアクセス方法に影響しようとしている(~/.bashrcまたは~/.bash_profile経由)端末セッション内で定義されているので、ターミナルからプログラムを実行するのと同じではないあるsystemコマンドを実行実行します。

プログラムを正常に実行するために必要な環境変数がある場合は、systemを呼び出す前に、MATLAB内のsetenvを使用してください。

0

私はMatlab(R2016b)と同じ問題を抱えていましたが、解決策はまったく逆でした。

変数が不足しているのではなく、system()LD_LIBRARY_PATHと定義されていて、プログラムでうまく座っていないMatlabパッケージの共有ライブラリにリダイレクトされました。スクリプト内でLD_LIBRARY_PATHをクリアした後、すべて正常に機能しました。たとえば、次のようにすることができます。

env -u LD_LIBRARY_PATH 
関連する問題