17

私はSublimeText2(以降、質問の残りの部分ではSublimeと呼びます)で.mファイルを編集してきましたが、最近、Pythonコードを実行するためにSublimeのビルド関数を使用することに慣れました。 MATLABファイルに似たようなものをセットアップしようとしています。コードを実行して別のウィンドウでコードを編集するのにうんざりしているので、これを実行しようとしています。

ドキュメントに従って、以下の非常に合理的なコードを使用してみました。「-r」フラグはMATLABを起動してファイルを実行し、「-nodesktop」フラグは大きなJava GUIなしでMATLABを起動し、「-nosplash」フラグは不要なスプラッシュ画面なしでMATLABを起動します。セレクターを使用すると、Sublimeはmファイルでこのビルドシステムを自動的に使用できます。path変数は、MATLABを起動するディレクトリ( "which matlab"を実行して見つかったディレクトリ)へのパスを設定します。

MATLAB GUI内から優先テキストエディターを設定できることは承知していますが、その設定には興味がありません。テキストエディタに加えて、ビルドシステムとしてSublimeを使用することに興味があります。

{
    "cmd": ["matlab", "-r", "-nodesktop", "-nosplash", "$file_name"],
    "selector": "source.m",
    "path": "/usr/local/MATLAB/R2012a/bin"    
}

エラーのない.mファイルでビルドを実行すると、このエラーが以下に表示されますが、これは意味がありません。標準のコマンドラインオプションを使用してMATLABを起動し、MATLABの内部エラーも受け取っているため、意味がないと思います。

/usr/local/MATLAB/R2012a/bin/matlab: 1: /usr/local/MATLAB/R2012a/bin/matlab: awk: not found
/usr/local/MATLAB/R2012a/bin/matlab: 1: /usr/local/MATLAB/R2012a/bin/matlab: expr: not found

Internal error 2: Could not determine the path of the
              MATLAB root directory.

                  original command path = /usr/local/MATLAB/R2012a/bin/matlab
                  current  command path = /usr/local/MATLAB/R2012a/bin/matlab

                  Please contact:

                      MathWorks Technical Support

                  for further assistance.

[Finished in 0.1s with exit code 1]

他の誰かが、代替ビルドシステムを介してMATLABスクリプトを呼び出すこのような問題を抱えていましたか?その情報が役立つ場合は、Ubuntu12.04以外の他のオペレーティングシステムでSublimeでMATLABのビルドシステムをセットアップしようとはしていません。

今は動作します! これが私のMatlab.sublime-build

{
    "cmd": ["/usr/local/MATLAB/R2012a/bin/matlab", "-nosplash", "<$file_name"],
    "selector": "source.m"
}

更新:例として、GithubページでLinuxおよびMac用のSublime Text 2 R2012aビルドファイルをホストしています: https ://github.com/jessebikman/Sublime-Text-2-build-Matlab-code

4

4 に答える 4

3

私は崇高な初心者ですが、これは私にとってはうまくいきました。私はあなたが2つの問題を抱えていると信じています:

  1. PATH環境(Sublimeが認識する)をunixコマンドプロンプトの環境に設定する方法を理解します。Macでは、environment.plistというファイルを設定し、そこにパスを追加する必要がありました。これにより、awkおよびexprエラーが取り除かれるはずです。

  2. これが私のmatlab.sublime-buildです:

    { "cmd": ["/Applications/MATLAB_R2011b.app/bin/matlab","<$file_name"] }

$file_nameの直前の<に注意してください。

これは完全ではありません。nodesktopオプションとnosplashオプションを追加すると、エラーが発生します。ビルドスクリプトが現在の状態であるため、プログラムはターミナルで正常に実行されますが、それでもスプラッシュが発生します。

于 2012-08-10T13:09:34.330 に答える
2

私のMatlabコードをSublimeでコンパイルしようとしました。sublime-buildスニペットを接続すると、機能します。ありがとうございます。ただし、私は通常、コンピュータビジョン関連のものをコーディングします。

    img = doImageConversion();
    imshow(img);
    pause;

    img = doAnotherImageConversion();
    imshow(img);
    pause;

pauseここでの問題は、崇高さが指示にとどまらないということです。一時停止を。に置き換えることで、これを克服できますpause(3)。しかし、完全に満足のいくものではありません!ビルドを実際に停止させるために、これらのMatlab.sublime-build設定が非常に便利であることがわかりました。

{
    "cmd": ["xterm", "-e", "matlab", "-nosplash", "-nodesktop", "-r", "run $file_name; quit;"],
    "selector": "source.m"
}

これには、Linuxディストリビューションにxtermがインストールされている必要があります。これで、SublimeはMatlabファイルを実行しているxterminalを起動し、実際には一時停止の指示で停止し、最後に終了します。このスニペットは、古いバージョンのMatlabではテストしていません。

乾杯lustiz

于 2012-12-15T14:33:55.753 に答える
1

推測ですが、SublimeTextでビルドシステムを使用したことはありませんが-r、ファイル名の直前にオプションを配置する必要があるかもしれません。を実行matlab -r -nodesktop "mycommand"すると、正常に起動し、ファイルを実行しようとしてnodesktop失敗します。

また、MATLABのインストールパス(通常、別の方法でインストールした場合を除く)には、小文字が含まrれていr2012aます。多分それは問題です。

-sd最後に提案できるのは、MATLAB起動ディレクトリを指定するオプションも使用することです。

それらの考えが役立つことを願っています!

于 2012-08-09T09:59:43.927 に答える
0

私の解決策はあなたの解決策に大きく基づいていますが、エラー後に閉じずにMATLABを数回開かないように、trycatchステートメントを追加しました。コマンドを次のように作成しました。

{
"cmd": ["/Applications/MATLAB_R2014b.app/bin/matlab","-nosplash", "-nojvm", "-r", "cd $file_dir; try run $file_name; catch varException; display(varException); end; quit;"], "selector": "source.m"
}   

また、エラーを理解したい場合は、エラーの最新のスタック印刷だけでこの他のエラーを使用してください。

{
"cmd": ["/Applications/MATLAB_R2014b.app/bin/matlab","-nosplash", "-nojvm", "-r", "cd $file_dir; try run $file_name; catch varException; display(varException.message);display(varException.cause);display(varException.stack(1)); end; quit;"], "selector": "source.m"
}

最後に、すべてのエラーを本当に理解している場合は、エラーのフルスタック印刷でこの最終バージョンを使用してください。

{
    "cmd": ["/Applications/MATLAB_R2014b.app/bin/matlab","-nosplash", "-nojvm", "-r", "cd $file_dir; try run $file_name; catch varException; display(varException.message); display(varException.cause);for i = length(varException.stack):-1:1; display(varException.stack(i)); end; end; quit;"], "selector": "source.m"
}
于 2018-12-08T11:39:39.460 に答える