Matlab

提供: ArchWiki
移動先: 案内検索

関連記事

公式ウェブサイト より:

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 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 には制限があります。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" でない場合、システム設定に問題が存在します。

glxinfo は動作するのに matlab が動作しない場合、以下のコマンドを試してみてください:

$ export LD_PRELOAD=/usr/lib/libstdc++.so; export LD_LIBRARY_PATH=/usr/lib/xorg/modules/dri/; matlab -nodesktop -nosplash -r "opengl info; exit" | grep Software

上記のコマンドで動作する場合、Matlab の起動スクリプトに以下を追加してください:

export LD_PRELOAD=/usr/lib/libstdc++.so
export LD_LIBRARY_PATH=/usr/lib/xorg/modules/dri/

図のフォント

ノート: このセクションは 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, 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 のリリースに合わせて適当なコンパイラのバージョンを指定して下さい。

ノート:
  • 新しいバージョンの Matlab (2017a 以上) では ${MATLAB}/bin/mexopts.sh のカスタマイズが反映されません。代わりに ${MATLAB}/bin/glnxa64/mexopts/LANG_glnxa64.xml ファイルが使われます。
  • 公式にはサポートされていませんが、警告を無視すれば新しいバージョンのコンパイラを使うことができます。

ヘルプブラウザ

ヘルプブラウザは動的なスレッドベクトルの可変スロットを使用しており 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

上記のエラーは 9619641003952 のバグが関連しています。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

上記のようにしても MATLAB がクラッシュしたりグラフィックが壊れる場合 (起動時や描画時)、Java の 2D OpenGL レンダリングが無効になっていることを確認してください。_JAVA_OPTIONS 環境変数に -Dsun.java2d.opengl=true が入っていてはいけません。

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

様々なウィンドウマネージャ (DWM, Awesome, bspwm) で発生する共通の問題です。

まずは以下のコマンドを実行して環境変数を設定してみてください:

$ export _JAVA_AWT_WM_NONREPARENTING=1

上記のコマンド後に Matlab が問題なく動作するのであれば、上記の変数を .xinitrc で export してください。

問題が解決しない場合、ウィンドウマネージャの名前を LG3D と Java に認識させる必要があります (古いウィンドウマネージャですが皮肉にも Java アプリケーションによってサポートされています)。前記の環境変数を消去してから、wmname ユーティリティをインストールして以下のコマンドを実行:

wmname LG3D

それから Matlab を起動してください。問題が解決したら、上記のコマンドをスタートスクリプトに記述してください (.xinitrcbspwmrc など)。他のアプリケーション (neofetchtdrop) もウィンドウマネージャが LG3D と認識してしまうため、その場合は個別に設定が必要です。

wmname で問題が直らない場合は上記の両方の解決方法を同時に試してみてください。

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

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
  • Matlab R2017b でも同じように "Failure loading desktop class." と表示されて起動が失敗します (2017年9月30日現在)。旧バージョンの cairo (1.14.10 で動作) と harfbuzz (1.4.6 で動作) をローカルディレクトリにインストールして、matlab の LD_LIBRARY_PATH に追加してください (参照: [5]):
LD_LIBRARY_PATH="/opt/matlab/outdatedLibraries/:$LD_LIBRARY_PATH" /opt/matlab/R2017b/bin/matlab

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

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

新しいバージョンの Matlab (例: R2017b) ではフォントディスプレイがロードできずに問題が発生することがあります。$MATLAB/bin/glnxa64/libfreetype.so.6 フォントディスプレイファイルを 'exclude' ディレクトリに移動してみてください。詳しくは BBS#231299 を参照。

ncurses の互換レイヤーは R2018a からは不要です。

Intel Graphics でレンダリング時や終了時にフリーズする

Intel Graphics チップで DRI3 を有効にしている場合に問題が発生すると一部のユーザーが報告しています。DRI3 を無効化して MATLAB を DRI2 のハードウェアレンダリングで動作させると解決する場合があります。LIBGL_DRI3_DISABLE 環境変数を 1 に設定して MATLAB を起動してください:

LIBGL_DRI3_DISABLE=1 /{MATLAB}/bin/matlab

上記の方法で解決しない場合、MATLAB のコマンドでソフトウェアレンダリングを選択することで問題は抑えられます (ただしパフォーマンスが落ちます):

opengl('save','software')

詳しくは [6] を見てください。

アドオンマネージャが動作しない

このセクションは R2017b と R2018a が対象です。

アドオンマネージャを使うには libselinuxAUR パッケージが必要です。

pango-1.40.5 から pango-1.40.6 にアップグレードすると、MATLABWindow アプリケーション (アドオンマネージャやシミュレーションデータインスペクタなど) が起動できなくなります [7]。MATLAB に付属している glib ライブラリのかわりにシステムライブラリを使うようにすることで問題は解決します。R2017b 現在、matlabroot/R2017b/cefclient/sys/os/glnxa64 には以下のように5つのライブラリが存在します:

libgio-2.0.so
libglib-2.0.so
libgmodule-2.0.so
libgobject-2.0.so
libgthread-2.0.so

上記をシステムの glib ライブラリのシンボリックリンクに置き換えてください。Arch ではライブラリは /usr/lib/ に存在します。

*.0 リンクも同じように置き換えてください。

インターフェイスを開くには "libfreetype.so.6" のリンクの修正も必要です。matlabroot/R2017b/bin/glnxa64/ に存在します。

ウィンドウに何も表示されない場合、#ヘルプブラウザに書かれているように html レンダラを " webutils.htmlrenderer('basic');" に切り替えてください。

Live Script エラー

LiveScript をロード・作成しようとするとエラーが表示される場合:

Viewing matlab live script files is not currently supported by this operating system configuration

libgcrypt などの依存ライブラリのシンボリックリンクが壊れていることが原因です。Live Editor を最初に起動したときにコンポーネントが展開されライブラリのシンボリックリンクが作成されます。壊れたシンボリックリンクと展開されたコンポーネントが含まれているフォルダを削除することで問題を解決できます (インストールディレクトリに存在します):

$MATLABROOT/sys/jxbrowser-chromium

もしくはインストールディレクトリに書き込みできない場合:

~/.matlab/R2017b/HtmlPanel

Matlab は Live Editor の起動時にコンテンツを再生成します。

また、#アドオンマネージャが動作しないの方法で問題が解決することもあります。

問題が解決しない場合、コマンドウィンドウで以下のコマンドを実行して詳細なエラーメッセージを確認してください:

>> com.mathworks.mde.liveeditor.widget.rtc.CachedLightweightBrowserFactory.createLightweightBrowser()

デバッグコンソールは以下のコマンドで開くことができます:

>> com.mathworks.mde.webbrowser.HtmlPanelDebugConsole.invoke;

ウェブカメラ・ビデオデバイスを使う

適切なパッケージアドオンをインストールしてください (webcam や OS Generic Video Interface など)。matlab をユーザーで起動している場合、パッケージをインストール・ダウンロードするディレクトリの書き込み権限があることを確認してください。

Matlab 2016b では gstreamer0.10 がないとウェブカメラや imaq アダプタは認識されません。gstreamer0.10 をインストールすることで問題を回避できます。

MATLAB R2017a からは Image Acqusition Toolbox はバージョン 1.0 の GStreamer ライブラリを使用します。

基本的に、OS Generic Video Interface Support パッケージよりも USB Webcam Support パッケージのほうが上手く動きます。

ヘルプブラウザを閉じたときに数分間 MATLAB がフリーズする

glibc を 2.24 から 2.25 にアップグレードするとヘルプブラウザを閉じたときに MATLAB がフリーズするようになります。MATLAB に付属しているバージョンの jxbrowser-chromium が原因です。glibc 2.26 と MATLAB R2017b/R2018a でも問題は存在します。

最新の jxbrowser をダウンロードして以下の jar を置き換えることで問題は解決します:

matlabroot/java/jarext/jxbrowser-chromium/jxbrowser-chromium.jar
matlabroot/java/jarext/jxbrowser-chromium/jxbrowser-linux64.jar

MATLAB は上記の jar を自動的に matlabroot/sys/jxbrowser-chromium/glnxa64/chromium に展開します (ヘルプブラウザを開いたとき)。matlabroot/sys/jxbrowser-chromium/glnxa64/chromium ディレクトリを削除して、確実に MATLAB が最新の jxbrowser を使うようにしてください。

jxbrowser-chromium プロセスのひとつがクラッシュして親プロセスが待機状態になり MATLAB のメインウィンドウがフリーズする場合もあります。手動で jxbrowser-chromium のプロセスを終了することフリーズ状態を解除できます。

以下はユーザーがヘルプブラウザを閉じたときに jxbrowser-chromium プロセスに終了シグナルを送信するスクリプトです:

#!/usr/bin/bash

if [ -z "$1" ]; then
	REL=R2017b
else
	REL=$1
fi

JXPATH="/path/to/MATLAB/$REL/sys/jxbrowser-chromium/glnxa64/chromium"
CMD="inotifywait -m -e CLOSE $JXPATH/resources.pak"

#Exit if the daemon is already active
if ! pgrep -f "$CMD" > /dev/null; then
	#Wait for user to close Help Browser, then killall leftover jxbrowser processes
	$CMD |
	while read line
	do
		killall "$JXPATH/jxbrowser-chromium"
	done
else
	exit
fi

以下のようにして MATLAB の起動スクリプトに組み込めます:

~/bin/unfreeze_matlab.sh R2017b &

MATLAB を終了したときにバックグラウンドジョブを閉じるには MATLAB の起動スクリプトの冒頭に以下を追加:

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT

ドロップダウンメニューが選択できない

一部のインターフェイス (シミュレーションデータインスペクタや Simulink テストマネージャ) でドロップダウンメニューのアイテムを選択しても何も起こらないことがあります。ドロップダウンメニューのアイテムをクリックするときに Shift キーを押しながらクリックすることで問題を回避できます。

起動しない (ライセンスエラー)

以下のようにコマンドラインから起動したときにライセンスエラーが表示される場合:

$ matlab
MATLAB is selecting SOFTWARE OPENGL rendering.
License checkout failed.
License Manager Error -9
This error may occur when: 
-The hostid of this computer does not match the hostid in the license file. 
-A Designated Computer installation is in use by another user. 
If no other user is currently running MATLAB, you may need to activate.

Troubleshoot this issue by visiting: 
http://www.mathworks.com/support/lme/R2017a/9

Diagnostic Information:
Feature: MATLAB 
License path: /home/<USER>/.matlab/R2017a_licenses/license_<NUM>_R2017a.lic:/home/<USER>/.matlab/R2017a_licenses/lice
nse_Darkness_<NUM>_R2017a.lic:/opt/MATLAB/R2017a/licenses/license.dat:/opt/MATLAB/R2017a/licenses/*
.lic 
Licensing error: -9,57.

アクティベーションをやりなおすことで問題は解決します。

起動時に "Failure loading desktop class" で MATLAB がクラッシュする

MATLAB が起動せず、以下のようにエラーが表示される場合:

$ matlab
Fatal Internal Error: Internal Error: Failure occurs during desktop startup. Details: Failure loading desktop class.

_JAVA_OPTIONS 環境変数で -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel オプションを設定している場合 (Java#GTK のルックアンドフィールを参照)、以下のコマンドで MATLAB を起動してください:

$ _JAVA_OPTIONS= matlab

問題が解決した場合、MATLAB の起動スクリプトに以下を追加:

export _JAVA_OPTIONS=

MATLABWindow のインターフェイスでテキストフィールドに入力できない

R2018a から、信号エディタやアドオンエクスプローラなど MATLABWindow ベースのインターフェイスでテキストが入力できなくなることがあります。MATLABWindow と MATLAB の webwindow インフラストラクチャは Chromium Embedded Framework をベースとしており、様々なバグが存在します: https://bitbucket.org/chromiumembedded/cef/issues/2026/multiple-major-keyboard-focus-issues-on

MATLABWindow から別のウィンドウに一度フォーカスを移して戻すと入力できるようになります。

systemd-nspawn で Matlab

Matlab を systemd-nspawn コンテナの中で動かすことで固定された環境を使うことができ、Arch のライブラリのアップデートで発生する問題を避けることができます。コンテナの設定について詳しくは Systemd-nspawn を参照してください。

以下は最小限の Debian 9 環境で MATLAB 2017b を動作させる例です。Matlab は既に /usr/local/MATLAB/R2017b にインストールしていることを前提としています。

Xhost を使うことで nspawn 環境から既存の X サーバーインスタンスを使えるようにします。

特定のフォルダ (ここでは "deb9") に最小限の debian 環境を作成:

$ debootstrap --arch=amd64 stretch deb9

root ユーザーのパスワードを設定して以下のコマンドで環境を起動:

$ systemd-nspawn --bind-ro=/dev/dri --bind=/tmp/.X11-unix --bind=/usr/local/MATLAB/ -b -D deb9

MATLAB を動かすのに必要なライブラリを nspawn 環境にインストール ("mesa-utils" と "usbutils" をインストールすることでグラフィックアクセラレーションや usb インターフェイスをデバッグできます):

$ apt-get install xorg build-essential libgtk2.0-0 libnss3 libasound2 

便利な統合を使うために (contrib リポジトリから) MATLAB-support パッケージをインストール:

$ apt-get install matlab-support

$DISPLAY 変数を設定して既存の X サーバーインスタンスを使用:

$ export DISPLAY=:0

$MATLABROOT/bin のバイナリを使うことで通常通りに MATLAB を起動できます。