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 2016a 以前は ncurses 6 と互換性がないため、ncurses5-compat-libsAUR パッケージをインストールする必要があります。詳しくは #起動時にセグメンテーション違反 を見て下さい。
インストール中、シンボリックリンクを作成するかどうか尋ねられます。シンボリックリンクを作成しないを選択した場合でも、/usr/local/bin
にシンボリックリンクを作成してターミナルから起動しやすくすることができます:
# ln -s /{MATLAB}/bin/matlab /usr/local/bin
メニューアイテムを作成するには、まずアイコンを取得します:
# curl https://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
はスプラッシュ画面を非表示にしてタスクバーに一時的に陣取るフラグです。
アイコンを正しく表示するにはスタートアップ WM クラスを .desktop
ファイルに追加する必要があります。MATLAB の実行中に、ターミナルを開いて以下を実行してみてください:
# xprop | grep WM_CLASS
xprop が起動したら、MATLAB のウィンドウを選択して、出力された情報を .desktop
ファイルの末尾に追加してください。例:
StartupWMClass=MATLAB R2016a - academic use
また、上記の .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, gcc49AUR, 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 のリリースに合わせて適当なコンパイラのバージョンを指定して下さい。
ヘルプブラウザ
ヘルプブラウザは動的なスレッドベクトルの可変スロットを使用しており BLAS などのライブラリによって提供されているコア機能と干渉することがあります。動的スレッドベクトルで使用されるスロットの数を少なく設定してみてください:
>> webutils.htmlrenderer('basic');
上記の設定は永続的です。設定を戻したい場合は:
>> 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
上記のエラーは 961964 や 1003952 のバグが関連しています。The MathWorks からパッチの適用されたライブラリを入手したり (961964)、別の解決方法 (1003952) も存在します。一般的な解決方法として glibc
の再コンパイルも提案されています [2]。
グラフィックを表示したときに 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
に設定してください [3]。
新しいバージョンの MATLAB (R2015b) では MATLAB_JAVA
の設定も必要となります [4]。例:
export J2D_D3D=false ./bin/glnxa64/install_unix -javadir /usr/lib/jvm/java-7-openjdk/jre
メニューやフィールドのテキストやフォントが崩れる
メニューや入力フィールドの表示が壊れたり正しく表示されない場合、MATLAB の設定で「デスクトップフォントを滑らかにするためにアンチエイリアス処理を使用」オプションを有効にすることで問題が解決するかもしれません。「設定 -> MATLAB -> フォント」から有効にできます。変更を適用するには Matlab の再起動が必要です。
インストール
Matlab のインストール時に、パッケージが見つからないとエラーが発生する場合、pacman でそのパッケージ名を検索してインストールしてください。もしくは x86_64 の場合、AUR にライブラリがあることもあります。
インストール時のライブラリエラー
bin/glnx64/libstdc++.so.6
のシンボリックリンクがlibstdc++.so.xx
の適切なバージョンを指し示していることを確認してください (同一ディレクトリに存在し 'xx' は数字です)。デフォルトでは、(存在しない) 古いバージョンを指し示していることがあります ('xx' とは違うバージョン)。
- インストールに使用するデバイスが
noexec
でマウントされていないことを確認してください。
- Mathworks のウェブサイトからファイルをダウンロードした場合、ファイルを NTFS や FAT パーティションに配置しないでください。シンボリックリンクが破壊されてしまいます。Ext4 あるいは Ext3 なら問題ありません。
起動時の警告やエラー
- 必要なライブラリを全てインストールしても、起動時に Matlab からライブラリが足りないと警告が表示される場合があります。Matlab によって起動時にチェックされるディレクトリにライブラリのシンボリックリンクを作成することで解決できます。例えば、Matlab によって
/lib64/libc.so.6
ライブラリが存在しないとエラー・警告が表示される場合、以下のコマンドで解決します:
# ln -s /lib/libc.so.6 /lib64
- 最新の Arch Linux で Matlab R2011b を実行すると起動時に "Failure loading desktop class." と表示されます (2012年3月12日現在)。システムの JVM を使うように Matlab を設定してください (jdk7-openjdk パッケージで動作することを確認済みです):
export MATLAB_JAVA=/usr/lib/jvm/java-7-openjdk/jre
起動時にセグメンテーション違反
ncurses を v6.x にアップグレードした後 Matlab が起動できなくなった場合、ncurses5-compat-libsAUR パッケージをインストールしてください。BBS#202575 を参照。
Intel Graphics でレンダリング時や終了時にフリーズする
Intel Graphics チップで DRI3 を有効にしている場合に問題が発生すると一部のユーザーが報告しています。MATLAB のコマンドでソフトウェアレンダリングを選択することで問題は抑えられます:
opengl('save','software')
詳しくは [5] を見てください。