MATLAB
公式ウェブサイト より:
- 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 のインストールは AUR の matlabAUR パッケージを使用するか、または 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 には制限があります。AUR の matlabAUR パッケージは MATLAB を Arch に統合して管理できるように作られています。パッケージはインストールを行うシステムでビルドする必要があり、インストールしたパッケージと pacman のキャッシュは削除してください。パッケージの再配布は EULA の明らかな侵害です。
AUR の matlabAUR パッケージはデフォルトでは最新の64ビット版の MATLAB のパッケージをビルドしますが、PKGBUILD は R2010b までの MATLAB リリースをサポートしており、複数のリリースの同時インストールも可能です。デフォルトで PKGBUILD は ID キーファイルが使える全てのツールボックスをインストールしますが、PKGBUILD を編集することでツールボックスのサブセットだけをインストールすることができます。The MathWorks による DRM ポリシーがあるためツールボックスの選択はパッケージの作成時に決める必要があります。AUR の matlabAUR パッケージは 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" でない場合、システム設定に問題が存在します。
図のフォント
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 oflibstdc++.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 を参照。