2012-07-15 56 views
5

MATLABは数学的言語と同じくらい速いので、速度はそれほど速くはありません。 MATLABコードの実行速度を上げるための一般的なプラクティスは何ですか?たとえば、forループを実行する代わりにベクトル/行列形式の計算を行うことができれば、コードの実行速度が向上することがわかります。MATLABコードを高速化するには?

私は他に何か提案がありますか?

答えて

1

ベクトル化について考え始めるには、いくつかの方法を検討してください。here
その後、hereのPDFは、不完全であっても、優れたパフォーマンスをもたらす多くのMatlabイディオムを提供します。あなたは簡単に並列化操作をたくさんやっている場合は

+1

最初のリンクは有益ですが、やや古いです。 'repmat'の代わりに' bsxfun'を使用してください – Jonas

+1

リンクが死んでいます。 – npretto

+0

私はリンクが死んでいることを確認します。私はそれについて何をすべきかを理解するでしょう。とにかく他の人が他の答えにもっと投票したように見える –

5

は、いくつかの基本的なパフォーマンスのヒントがあります:

  1. はにプロファイラを使用することを学びます 計算が遅い部分を理解する
  2. ベクトル化による高価な関数呼び出しの量を制限する
  3. Preassi GN配列の代わりに、(例えばbsxfunなど)のループでそれらを成長
  4. 使用するマルチスレッド機能
  5. は、MATLABの最新バージョンを使用してください - 過去5年間
  6. 上で驚異的なパフォーマンスの向上 がなされているマルチコア用の並列ツールボックスを使用します及び/又はGPU処理
  7. 使用効率的なアルゴリズム
  8. 使用JavaまたはC/C++コードは、適切な場合(スピードアップが期待はずれであってもよいが)
2

Lightspeedのインストール。

私は最近、Tom MinkaのLightspeedを自分のMacにインストールするという不満足なプロセスを経ています。途中、私は他のMacユーザーと共有する価値のある教訓をいくつか学びました。 私のシステムは、ライトスピードは、その名前にはスペースを含むパスにインストールされていることを確認し、以下の仕様 OS Xバージョン10.8.5 Xcodeのバージョン4.6.3 Matlabのバージョン2011A

1)があります。私はそれを "Library/Application Support/Matlab"の中に入れてしまったので、無限のトラブルを引き起こしました。特に、Tomer Levinboim(levinboim.blogspot.co.nz)が報告したのと同じ問題が修正され、問題が完全に解決されなかったという追加の問題が発生しました。

2)Michel Valstarのメモ「MacでMatlab Mexファイルを編集する」を読み、Mathworks(http://www.mathworks.com/matlabcentral/answers/94092)から推奨パッチをインストールしてください。このパッチは、Levinboimが識別する必要なすべてのフラグ/オプションの変更を適用します。

3)install_lightspeedの行オプション.COMPFLAGSを変更します。光速フォルダ内のm個のファイルは、を指すように:Matlabのチェックで

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk

4)は現在のパスはLightspeedフォルダを指しています。 install_lightspeedコマンドを実行します。成功した場合は、test_lightspeedを実行します。これでLightspeedの作業バージョンが完成しました。

5)パス設定はセッション間で維持されるため、Read Meで示唆されているstartup.shアプローチはMacでは不要に見えます。ただし、そのトラックを降りたい場合は、まず、
Where is startup.m supposed to be? http://obasic.net/set-your-customized-startup-file-for-matlabとお読みください。