MATLAB

提供: ArchWiki
2015年11月4日 (水) 13:08時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

関連記事

公式ウェブサイト より:

MATLAB は、数値計算、可視化およびプログラミングのための高水準言語および対話型環境です。MATLAB を使用して、データ解析、アルゴリズム開発、各種モデルおよびアプリケーションの作成を行うことができます。言語、ツール、組み込み関数により、多様なアプローチの調査が可能となり、スプレッドシートや C/C++、Java などの従来のプログラミング言語よりもすばやく解を求めることができます。

概要

MATLAB は The MathWorks によって開発されたプロプライエタリなソフトウェアで、入手・インストール・アクティベートするにはライセンスが必要です。MATLAB の新バージョンは年二回 (通例3月と9月) R20XXa や R20XXb という名前でリリースされます。The MathWorks はお得な Student Version も提供しており年1回リリースされます。R2012b から MATLAB は64ビットの Linux でのみ提供されるようになりました。MATLAB は多数の Linux ディストリビューション を公式でサポートしていますが、Arch は公式サポートされていません。公式でサポートされてはいませんが、Arch に MATLAB をインストールして使うのは簡単です。

インストール

インストールする前に MATLAB ソフトウェアの完全なコピーを入手する必要があります。ライセンスを持っていれば MATLAB ソフトウェアは DVD と The MathWorks のウェブサイト から入手できます。ソフトウェアに加えて、インストールにはファイルインストールキーが必要です。MATLAB のインストールは AURmatlabAUR パッケージを使用するか、または MATLAB のインストールソフトウェアから直接インストールできます。matlabAUR パッケージには依存パッケージを管理してインストールプロセスの微妙なところを上手くやってくれるという利点があり、かたや MATLAB インストールソフトウェアから直接インストールする場合は通常ユーザーでホームディレクトリにインストールすることができ MATLAB の全てのリリースを使うことが可能です (matlabAUR パッケージは R2010b 以降のリリースしか扱えません)。

MATLAB インストールソフトウェアからインストール

MATLAB インストールソフトウェアには必要なものが全て揃っており、サイレントモードでインストールするのに別個のパッケージは必要ありません。GUI でインストールするには Xorg グラフィカルディスプレイが必要になります。インストールは install スクリプトによって行われます。スクリプトを root で実行すると MATLAB はシステム全体にインストールされ、ユーザーで実行するとそのユーザーだけが使えるようにインストールされます。

MATLAB 2015b 以前は ncurses 6 と互換性がないため、ncurses5-compat-libsAUR パッケージをインストールする必要があります。詳しくは #起動時にセグメンテーション違反 を見て下さい。

インストール中、シンボリックリンクを作成するかどうか尋ねられます。シンボリックリンクを作成しないを選択した場合でも、/usr/local/bin にシンボリックリンクを作成してターミナルから起動しやすくすることができます:

# ln -s /{MATLAB}/bin/matlab /usr/local/bin

メニューアイテムを作成するには、まずアイテムを取得します:

# curl http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -o /usr/share/icons/matlab.png

それから以下の内容で /usr/share/applications に新しい .desktop ファイルを作成してください:

/usr/share/applications/matlab.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Type=Application
Icon=/usr/share/icons/matlab.png
Name=MATLAB
Comment=Start MATLAB - The Language of Technical Computing
Exec=matlab -desktop -nosplash
Categories=Development;
MimeType=text/x-matlab;

Exec コマンド行の意味は以下の通りです:

  • -desktop はターミナルを使わずに Matlab を起動するのに必要なフラグです。
  • -nosplash はスプラッシュ画面を非表示にしてタスクバーに一時的に陣取るフラグです。

また、上記の .desktop ファイルを ~/Desktop ディレクトリに置くことでデスクトップにショートカットを作成できます。[1] も参照してください。

AUR パッケージからインストール

プロプライエタリなソフトウェアである MATLAB の EULA には制限があります。AURmatlabAUR パッケージは MATLAB を Arch に統合して管理できるように作られています。パッケージはインストールを行うシステムでビルドする必要があり、インストールしたパッケージと pacman のキャッシュは削除してください。パッケージの再配布は EULA の明らかな侵害です。

AURmatlabAUR パッケージはデフォルトでは最新の64ビット版の MATLAB のパッケージをビルドしますが、PKGBUILD は R2010b までの MATLAB リリースをサポートしており、複数のリリースの同時インストールも可能です。デフォルトで PKGBUILD は ID キーファイルが使える全てのツールボックスをインストールしますが、PKGBUILD を編集することでツールボックスのサブセットだけをインストールすることができます。The MathWorks による DRM ポリシーがあるためツールボックスの選択はパッケージの作成時に決める必要があります。AURmatlabAUR パッケージは MATLAB インストールソフトウェアとファイルインストールキーの両方をソースディレクトリに必要とします。ファイルインストールキーの名前は matlab.fik で、インストールソフトウェアは matlab.iso という名前の iso ファイルである必要があります。iso ファイルとファイルインストールキーを作成したら、MATLAB パッケージを作成・インストールすることができます。

r2010b から r2011a の MATLAB リリースでは iso ファイルには次の内容が含まれています: ./archives/, ./bin/, ./etc/, ./help/, ./java/, ./activate.ini, ./install, ./installer_input.txt。MATLAB ダウンロードエージェントを使ってインストールソフトウェアをダウンロードした場合、ダウンロードしたディレクトリで mkisofs -r -o を実行することで iso ファイルを作成できます。

r2011b 以降の MATLAB リリースでは iso ファイルには次の内容が含まれています: ./archives/, ./bin/, ./etc/, ./help/, ./java/, ./activate.ini, ./install, ./installer_input.txt。r2014a 以前のバージョンでは、MATLAB ダウンロードエージェントは必要なファイルを全てダウンロードすることができ、ダウンロードしたディレクトリで mkisofs -r -o を実行するだけで iso ファイルを作成できます。r2014a 以降の MATLAB リリースでは、MATLAB ダウンロードエージェントは MATLAB インストーラーだけをダウンロードします。ダウンロードされた後に MATLAB インストーラーを実行して MATLAB ソフトウェアとツールボックスをダウンロードする必要があります。従って、MATLAB ダウンロードエージェントで iso ファイルを生成するには2段階のステップが必要です。まず、MATLAB インストーラーをダウンロード・実行して一時ディレクトリに MATLAB をインストールします。デフォルトでは ~/Downloads/MathWorks に MATLAB ソフトウェアとツールボックスがダウンロードされます (-downloadFolder /path/to/directory フラグを使うことで保存場所は変えることが可能です)。ソフトウェアとツールボックスがダウンロードされたら MATLAB インストーラーは終了してもかまいません。その後、インストーラーのディレクトリ (上記のファイルが含まれています) とダウンロードしたディレクトリ (./archives/ が含まれています) を結合して、そのディレクトリで mkisofs -r -o を実行することで必要な iso ファイルが作成できます。

アクティベーション

MATLAB を実行するにはライセンスファイルをインストールする必要があります。ライセンスファイルは $MATLABROOT/bin/activate_matlab.sh で生成することができ、MATLAB から直接ダウンロードすることもできます。

R2013b 以前

R2013b 以前まではライセンスファイルは eth0 の MAC アドレスにリンクされていました。これが Arch Linux によって使われている Predictable Network Interface Names と問題を発生させます。カーネルコマンドラインに net.ifnames=0 を追加するか、以下のように udev ルールファイルを作成することで Predictable Network Interface Names は無効化できます:

# ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

デバイス名を変更することもできますが、名前を eth0 に変更するとブート時にカーネルと udev で競合状態になる可能性があります。他の解決法としてはライセンスファイルにリンクされた MAC アドレスを持った eth0 という名前のダミーのネットワークインターフェイスを作成する方法があります。まず、ip link を使って MAC アドレスを取得してください。次に、以下のファイルを作成します:

/etc/systemd/system/matlab.licensing.service
[Unit]
Description=Dummy network interface for MATLAB
Requires=systemd-modules-load.service

[Service]
Type=oneshot
ExecStart=/sbin/ip link set dev dummy0 name eth0
ExecStart=/sbin/ip link set dev eth0 address 00:00:00:00:00:00

[Install]
WantedBy=multi-user.target

00:00:00:00:00:00 はライセンスファイルにリンクされた MAC アドレスに置き換えてください。

それからブート時にスクリプトを実行させるようにします:

# systemctl enable matlab.licensing

最後に、以下のファイルを作成してブート時に dummy モジュールがロードされるように設定:

/etc/modules-load.d/dummy.conf
dummy

設定

Java

MATLAB ソフトウェアには JVM がバンドルされているため Java をインストールする必要はありません。MATLAB にバンドルされている JVM のバージョンは基本的に公式リポジトリjre7-openjdk よりも遅れているため、MATLAB_JAVA 環境変数を使って代替 JRE のパスを指定することができます (必須ではありません)。例えば、jre7-openjdk JRE を指定して Java のバージョンを確認するには、次を実行:

$ MATLAB_JAVA=/usr/lib/jvm/java-7-openjdk/jre matlab -nodesktop -nosplash -r "version -java, exit" | grep Java

OpenGL アクセラレーション

MATLAB はハードウェアによる 2D や 3D の OpenGL アクセラレーションを利用することができます。ハードウェアアクセラレーションを使用するには MATLAB の外での設定が必要です。適切なビデオドライバーと OpenGL ユーティリティライブラリの glu パッケージを公式リポジトリからインストールしてください。X11 フォワーディングを使っている場合、クライアントとサーバーの両方にビデオドライバーをインストールする必要があります。MATLAB がハードウェアによる OpenGL アクセラレーションを利用できているか確認するには次を実行:

$ matlab -nodesktop -nosplash -r "opengl info; exit" | grep Software

"software rendering" が "false" でない場合、ハードウェアアクセラレーションに問題が存在します。その場合 OpenGL が正しく設定されているか確認してください。公式リポジトリmesa-demos パッケージに含まれている glxinfo プログラムを使って確認できます:

$ glxinfo | grep "direct rendering"

"direct rendering" が "yes" でない場合、システム設定に問題が存在します。

図のフォント

ノート: このセクションは R2014a 以前までの MATLAB にのみ適用されます。R2014b からは MATLAB は TrueType フォントを使います。したがって $ fc-match Helvetica でフォントが返ってきていれば、図のフォントは上手く使われるはずです。

MATLAB はテキストオンリーモードで動作させることもできますが、MATLAB には高度なグラフィック機能も備えています。MATLAB がシステムフォントを利用しているか確認するには次を実行:

$ matlab -nodesktop -nosplash -r "xlabel('BIG FONT', 'FontSize', 42); ylabel('small font', 'FontSize', 12); pause; exit" > /dev/null

上記のコマンドは横座標に大きなフォントの "BIG FONT" を、縦座標に小さなフォントの "small font" を使用して MATLAB で図を作成します。"BIG FONT" と "small font" のサイズが同じ場合、Xorg フォントを参照して適当なビットマップフォントパッケージ (公式リポジトリxorg-fonts-100dpi または xorg-fonts-75dpi) をシステムにインストールしてください。

サウンド

音を流すのに使っているデフォルトのサウンドカードを MATLAB が使用できるか確認するには次を実行:

$ matlab -nodesktop -nosplash -r "load handel; sound(y, Fs); pause(length(y)/Fs); exit" > /dev/null

上記のコマンドでヘンデルの「ハレルヤコーラス」の一節が再生されるはずです。再生されない場合 ALSA が正しく設定されていることを確認してください。公式リポジトリalsa-utils パッケージに含まれている speaker-test プログラムで確認できます:

$ speaker-test

何も音が聞こえない場合、システム設定に問題が存在します。

GPU コンピューティング

MATLAB は CUDA が使える GPU を利用してアプリケーションを高速化することが可能です。サポートされている GPU を活用するには nvidia, nvidia-utils, ocl-icd, opencl-nvidia,cuda パッケージを公式リポジトリからインストールしてください。MATLAB で GPU を利用できるかどうか確認するには次を実行:

$ matlab -nodesktop -nosplash -r "x=rand(10, 'single'); g=gpuArray(x); Success=isequal(gather(g), x), exit"  | sed -ne '/Success =/,$p'

サポートされているコンパイラのインストール

MATLAB の機能をフルに活用するには (例: Simulink, Builder JA, MEX ファイルコンパイルの使用)、サポートされているバージョンの gcc, g++, gfortran, jdk コンパイラをインストールする必要があります。サポートされているコンパイラの詳細は 最新リリース過去のリリース ともにオンラインで見ることができます。過去の MATLAB リリースでサポートされているバージョンの gcc, g++, jdk コンパイラの多くは AUR からインストールできますが (例: gcc43AUR, gcc44AUR, gcc47AUR, jdk6AUR)、gfortran コンパイラの昔のバージョンはパッケージになっていません。

過去のバージョンの gcc, g++, gfortran コンパイラで MEX ファイルを使うには、${MATLAB}/bin/mexopts.sh を編集して、CC='gcc'CC='gcc-4.X' に、CXX='g++'CXX='g++-4.X' に、FC='gfortran'FC='gfortran-4.X' に全て置き換えて下さい。X は MATLAB のリリースに合わせて適当なコンパイラのバージョンを指定して下さい。

ヘルプブラウザ

The help browser uses valuable slots in the dynamic thread vector and causes competition with core functionality provided by libraries like the BLAS that also depend on the dynamic thread vector. The help browser can be configured to use fewer slots in the dynamic thread vector with

 >> webutils.htmlrenderer('basic');

This is a persistent change and to reverse it use

 >> webutils.htmlrenderer('default');

トラブルシューティング

Static TLS エラー

MATLAB にはヘルプブラウザ doc や BLAS ライブラリなど静的なスレッドローカルストレージ (TLS) を使ってコンパイルされたライブラリが多数含まれています。例えば:

>> doc('help');
>> ones(10)*randn(10);
Error using  * 
BLAS loading error:
dlopen: cannot load any more object with static TLS

is related to bugs 961964 and 1003952. In some cases (e.g., bug 961964) patched libraries are available from The MathWorks, while in others (e.g., bug 1003952) work arounds exist. A more general solution of recompiling glibc has also been suggested.

グラフィックを表示したときに MATLAB がクラッシュする

このエラーを確認するために、次のコマンドで MATLAB を起動して MATLAB のコマンドプロンプトから opengl info で OpenGL の情報を収集してください:

LIBGL_DEBUG=verbose matlab

MATLAB がクラッシュして以下のように出力がされる場合:

libGL error: dlopen /usr/lib/xorg/modules/dri/swrast_dri.so failed 
(/usr/local/MATLAB/R2011b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: 
version `GLIBCXX_3.4.15' not found (required by /usr/lib/xorg/modules/dri/swrast_dri.so))

MATLAB が Arch Linux で使われている最新のバージョンよりも古いバージョンの固有の GNU C++ ライブラリを使っているのが問題です。以下を実行して最新の C++ ライブラリを MATLAB が使うようにしてください:

# cd /usr/local/MATLAB/R(your release)/sys/os/glnxa64
# unlink libstdc++.so.6
# ln -s /usr/lib/libstdc++.so.6

DWM/Awesome を使っている場合に UI が表示されない/グレーで表示される

wmname はルートウィンドウのウィンドウマネージャの名前を設定するユーティリティです。

wmname LG3D

それから Matlab を起動してください。

テキストが不明瞭または表示されない

J2D_D3D 環境変数を false に設定してください [2]

インストール

Matlab のインストール時に、パッケージが見つからないとエラーが発生する場合、pacman でそのパッケージ名を検索してインストールしてください。もしくは x86_64 の場合、AUR にライブラリがあることもあります。

Install-Time Library Errors

  • Make sure that the symlink bin/glnx64/libstdc++.so.6 is pointing to the correct version of libstdc++.so.xx (which is also in the same directory and has numbers where 'xx' is). By default, it may be pointing to an older (and nonexistent) version (different value for 'xx').
  • Make sure the device you're installing from is not mounted as noexec
  • If you downloaded the files from Mathworks' website, make sure they are not on an NTFS or FAT partition, because that can mess up the symlinks. Ext4 or Ext3 should work.

Resolving start warnings/errors

  • Even if all needed libraries are installed, Matlab when starting can still report some missing libraries. This is resolved by symbolic linking of needed libraries to directories that Matlab checks at start-up. For example, if Matlab triggers error/warning about missing /lib64/libc.so.6 library, this can be resolved by:
# ln -s /lib/libc.so.6 /lib64
  • Matlab R2011b with an up-to-date Arch Linux (as of March 12, 2012) fails on startup with the familiar "Failure loading desktop class." A solution is to point Matlab to the system JVM (confirmed to work with the jdk7-openjdk package):
export MATLAB_JAVA=/usr/lib/jvm/java-7-openjdk/jre

起動時にセグメンテーション違反

ncurses を v6.x にアップグレードした後 Matlab が起動できなくなった場合、ncurses5-compat-libsAUR パッケージをインストールしてください。BBS#202575 を参照。