「MATLAB」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://tools.suckless.org/」を「https://tools.suckless.org/」に置換) |
(同期) |
||
1行目: | 1行目: | ||
[[Category:計算と科学]] |
[[Category:計算と科学]] |
||
[[en:Matlab]] |
[[en:Matlab]] |
||
+ | [[zh-hans:Matlab]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Octave}} |
{{Related|Octave}} |
||
79行目: | 80行目: | ||
R2013b 以前まではライセンスファイルは eth0 の MAC アドレスにリンクされていました。これが Arch Linux によって使われている [[ネットワーク設定#デバイス名|Predictable Network Interface Names]] と問題を発生させます。カーネルコマンドラインに {{ic|1=net.ifnames=0}} を追加するか、以下のように udev ルールファイルを作成することで Predictable Network Interface Names は無効化できます: |
R2013b 以前まではライセンスファイルは eth0 の MAC アドレスにリンクされていました。これが Arch Linux によって使われている [[ネットワーク設定#デバイス名|Predictable Network Interface Names]] と問題を発生させます。カーネルコマンドラインに {{ic|1=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 という名前のダミーのネットワークインターフェイスを作成する方法があります。まず、{{ic|ip link}} を使って MAC アドレスを取得してください。次に、以下のファイルを作成します: |
[[ネットワーク設定#デバイス名の変更|デバイス名を変更]]することもできますが、名前を eth0 に変更するとブート時にカーネルと udev で競合状態になる可能性があります。他の解決法としてはライセンスファイルにリンクされた MAC アドレスを持った eth0 という名前のダミーのネットワークインターフェイスを作成する方法があります。まず、{{ic|ip link}} を使って MAC アドレスを取得してください。次に、以下のファイルを作成します: |
||
113行目: | 114行目: | ||
MATLAB ソフトウェアには JVM がバンドルされているため [[Java]] をインストールする必要はありません。MATLAB にバンドルされている JVM のバージョンは基本的に[[公式リポジトリ]]の {{pkg|jre7-openjdk}} よりも遅れているため、{{ic|MATLAB_JAVA}} 環境変数を使って代替 JRE のパスを指定することができます (必須ではありません)。例えば、{{pkg|jre7-openjdk}} JRE を指定して Java のバージョンを確認するには、次を実行: |
MATLAB ソフトウェアには JVM がバンドルされているため [[Java]] をインストールする必要はありません。MATLAB にバンドルされている JVM のバージョンは基本的に[[公式リポジトリ]]の {{pkg|jre7-openjdk}} よりも遅れているため、{{ic|MATLAB_JAVA}} 環境変数を使って代替 JRE のパスを指定することができます (必須ではありません)。例えば、{{pkg|jre7-openjdk}} JRE を指定して Java のバージョンを確認するには、次を実行: |
||
− | + | $ MATLAB_JAVA=/usr/lib/jvm/java-7-openjdk/jre matlab -nodesktop -nosplash -r "version -java, exit" | grep Java |
|
=== OpenGL アクセラレーション === |
=== OpenGL アクセラレーション === |
||
− | MATLAB はハードウェアによる 2D や 3D の OpenGL アクセラレーションを利用することができます。ハードウェアアクセラレーションを使用するには MATLAB の外での設定が必要です。適切な[[Xorg#ドライバーのインストール|ビデオドライバー]]と OpenGL ユーティリティライブラリの {{Pkg|glu}} パッケージを |
+ | MATLAB はハードウェアによる 2D や 3D の OpenGL アクセラレーションを利用することができます。ハードウェアアクセラレーションを使用するには MATLAB の外での設定が必要です。適切な[[Xorg#ドライバーのインストール|ビデオドライバー]]と OpenGL ユーティリティライブラリの {{Pkg|glu}} パッケージをインストールしてください。X11 フォワーディングを使っている場合、クライアントとサーバーの両方にビデオドライバーをインストールする必要があります。MATLAB がハードウェアによる OpenGL アクセラレーションを利用できているか確認するには次を実行: |
− | + | $ matlab -nodesktop -nosplash -r "opengl info; exit" | grep Software |
|
"software rendering" が "false" でない場合、ハードウェアアクセラレーションに問題が存在します。その場合 OpenGL が正しく設定されているか確認してください。[[公式リポジトリ]]の {{Pkg|mesa-demos}} パッケージに含まれている {{ic|glxinfo}} プログラムを使って確認できます: |
"software rendering" が "false" でない場合、ハードウェアアクセラレーションに問題が存在します。その場合 OpenGL が正しく設定されているか確認してください。[[公式リポジトリ]]の {{Pkg|mesa-demos}} パッケージに含まれている {{ic|glxinfo}} プログラムを使って確認できます: |
||
− | + | $ glxinfo | grep "direct rendering" |
|
"direct rendering" が "yes" でない場合、システム設定に問題が存在します。 |
"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/ |
||
=== 図のフォント === |
=== 図のフォント === |
||
133行目: | 142行目: | ||
MATLAB はテキストオンリーモードで動作させることもできますが、MATLAB には高度なグラフィック機能も備えています。MATLAB がシステムフォントを利用しているか確認するには次を実行: |
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#プログラムが "font '(null)'" を要求する|Xorg フォント]]を参照して適当なビットマップフォントパッケージ ([[公式リポジトリ]]の {{Pkg|xorg-fonts-100dpi}} または {{Pkg|xorg-fonts-75dpi}}) をシステムにインストールしてください。 |
上記のコマンドは横座標に大きなフォントの "BIG FONT" を、縦座標に小さなフォントの "small font" を使用して MATLAB で図を作成します。"BIG FONT" と "small font" のサイズが同じ場合、[[Xorg#プログラムが "font '(null)'" を要求する|Xorg フォント]]を参照して適当なビットマップフォントパッケージ ([[公式リポジトリ]]の {{Pkg|xorg-fonts-100dpi}} または {{Pkg|xorg-fonts-75dpi}}) をシステムにインストールしてください。 |
||
141行目: | 150行目: | ||
音を流すのに使っているデフォルトのサウンドカードを MATLAB が使用できるか確認するには次を実行: |
音を流すのに使っているデフォルトのサウンドカードを MATLAB が使用できるか確認するには次を実行: |
||
− | + | $ matlab -nodesktop -nosplash -r "load handel; sound(y, Fs); pause(length(y)/Fs); exit" > /dev/null |
|
上記のコマンドでヘンデルの「ハレルヤコーラス」の一節が再生されるはずです。再生されない場合 [[ALSA]] が正しく設定されていることを確認してください。[[公式リポジトリ]]の {{Pkg|alsa-utils}} パッケージに含まれている {{ic|speaker-test}} プログラムで確認できます: |
上記のコマンドでヘンデルの「ハレルヤコーラス」の一節が再生されるはずです。再生されない場合 [[ALSA]] が正しく設定されていることを確認してください。[[公式リポジトリ]]の {{Pkg|alsa-utils}} パッケージに含まれている {{ic|speaker-test}} プログラムで確認できます: |
||
− | + | $ speaker-test |
|
何も音が聞こえない場合、システム設定に問題が存在します。 |
何も音が聞こえない場合、システム設定に問題が存在します。 |
||
153行目: | 162行目: | ||
MATLAB は [[CUDA]] が使える [http://www.mathworks.co.uk/discovery/matlab-gpu.html GPU] を利用してアプリケーションを高速化することが可能です。サポートされている GPU を活用するには {{Pkg|nvidia}}, {{Pkg|nvidia-utils}}, {{Pkg|ocl-icd}}, {{Pkg|opencl-nvidia}},{{Pkg|cuda}} パッケージを[[公式リポジトリ]]からインストールしてください。MATLAB で GPU を利用できるかどうか確認するには次を実行: |
MATLAB は [[CUDA]] が使える [http://www.mathworks.co.uk/discovery/matlab-gpu.html GPU] を利用してアプリケーションを高速化することが可能です。サポートされている GPU を活用するには {{Pkg|nvidia}}, {{Pkg|nvidia-utils}}, {{Pkg|ocl-icd}}, {{Pkg|opencl-nvidia}},{{Pkg|cuda}} パッケージを[[公式リポジトリ]]からインストールしてください。MATLAB で GPU を利用できるかどうか確認するには次を実行: |
||
− | + | $ matlab -nodesktop -nosplash -r "x=rand(10, 'single'); g=gpuArray(x); Success=isequal(gather(g), x), exit" | sed -ne '/Success =/,$p' |
|
=== サポートされているコンパイラのインストール === |
=== サポートされているコンパイラのインストール === |
||
160行目: | 169行目: | ||
過去のバージョンの {{ic|gcc}}, {{ic|g++}}, {{ic|gfortran}} コンパイラで MEX ファイルを使うには、{{ic|${MATLAB}/bin/mexopts.sh}} を編集して、{{ic|<nowiki>CC='gcc'</nowiki>}} を {{ic|<nowiki>CC='gcc-4.X'</nowiki>}} に、{{ic|<nowiki>CXX='g++'</nowiki>}} を {{ic|<nowiki>CXX='g++-4.X'</nowiki>}} に、{{ic|<nowiki>FC='gfortran'</nowiki>}} を {{ic|<nowiki>FC='gfortran-4.X'</nowiki>}} に全て置き換えて下さい。{{ic|X}} は MATLAB のリリースに合わせて適当なコンパイラのバージョンを指定して下さい。 |
過去のバージョンの {{ic|gcc}}, {{ic|g++}}, {{ic|gfortran}} コンパイラで MEX ファイルを使うには、{{ic|${MATLAB}/bin/mexopts.sh}} を編集して、{{ic|<nowiki>CC='gcc'</nowiki>}} を {{ic|<nowiki>CC='gcc-4.X'</nowiki>}} に、{{ic|<nowiki>CXX='g++'</nowiki>}} を {{ic|<nowiki>CXX='g++-4.X'</nowiki>}} に、{{ic|<nowiki>FC='gfortran'</nowiki>}} を {{ic|<nowiki>FC='gfortran-4.X'</nowiki>}} に全て置き換えて下さい。{{ic|X}} は MATLAB のリリースに合わせて適当なコンパイラのバージョンを指定して下さい。 |
||
+ | |||
+ | {{Note| |
||
+ | * 新しいバージョンの Matlab (2017a 以上) では {{ic|${MATLAB}/bin/mexopts.sh}} のカスタマイズが反映されません。代わりに {{ic|${MATLAB}/bin/glnxa64/mexopts/LANG_glnxa64.xml}} ファイルが使われます。 |
||
+ | * 公式にはサポートされていませんが、警告を無視すれば新しいバージョンのコンパイラを使うことができます。}} |
||
=== ヘルプブラウザ === |
=== ヘルプブラウザ === |
||
202行目: | 215行目: | ||
# unlink libstdc++.so.6 |
# unlink libstdc++.so.6 |
||
# ln -s /usr/lib/libstdc++.so.6 |
# ln -s /usr/lib/libstdc++.so.6 |
||
+ | |||
+ | 上記のようにしても MATLAB がクラッシュしたりグラフィックが壊れる場合 (起動時や描画時)、Java の 2D OpenGL レンダリングが無効になっていることを確認してください。{{ic|_JAVA_OPTIONS}} 環境変数に {{ic|1=-Dsun.java2d.opengl=true}} が入っていてはいけません。 |
||
=== DWM/Awesome を使っている場合に UI が表示されない/グレーで表示される === |
=== DWM/Awesome を使っている場合に UI が表示されない/グレーで表示される === |
||
− | + | 様々なウィンドウマネージャ (DWM, Awesome, bspwm) で発生する共通の問題です。 |
|
+ | |||
+ | まずは以下のコマンドを実行して環境変数を設定してみてください: |
||
+ | |||
+ | $ export _JAVA_AWT_WM_NONREPARENTING=1 |
||
+ | |||
+ | 上記のコマンド後に Matlab が問題なく動作するのであれば、上記の変数を {{ic|.xinitrc}} で export してください。 |
||
+ | |||
+ | 問題が解決しない場合、ウィンドウマネージャの名前を LG3D と Java に認識させる必要があります (古いウィンドウマネージャですが皮肉にも Java アプリケーションによってサポートされています)。前記の環境変数を消去してから、[https://tools.suckless.org/wmname wmname] ユーティリティをインストールして以下のコマンドを実行: |
||
wmname LG3D |
wmname LG3D |
||
+ | それから Matlab を起動してください。問題が解決したら、上記のコマンドをスタートスクリプトに記述してください ({{ic|.xinitrc}} や {{ic|bspwmrc}} など)。他のアプリケーション ({{ic|neofetch}} や {{ic|tdrop}}) もウィンドウマネージャが LG3D と認識してしまうため、その場合は個別に設定が必要です。 |
||
− | それから Matlab を起動してください。 |
||
+ | |||
+ | wmname で問題が直らない場合は上記の両方の解決方法を同時に試してみてください。 |
||
=== テキストが不明瞭または表示されない === |
=== テキストが不明瞭または表示されない === |
||
241行目: | 266行目: | ||
export MATLAB_JAVA=/usr/lib/jvm/java-7-openjdk/jre |
export MATLAB_JAVA=/usr/lib/jvm/java-7-openjdk/jre |
||
+ | |||
+ | * Matlab R2017b でも同じように "Failure loading desktop class." と表示されて起動が失敗します (2017年9月30日現在)。旧バージョンの {{Pkg|cairo}} (1.14.10 で動作) と {{Pkg|harfbuzz}} (1.4.6 で動作) をローカルディレクトリにインストールして、matlab の LD_LIBRARY_PATH に追加してください (参照: [https://bbs.archlinux.org/viewtopic.php?id=228944]): |
||
+ | |||
+ | LD_LIBRARY_PATH="/opt/matlab/outdatedLibraries/:$LD_LIBRARY_PATH" /opt/matlab/R2017b/bin/matlab |
||
=== 起動時にセグメンテーション違反 === |
=== 起動時にセグメンテーション違反 === |
||
− | {{Pkg|ncurses}} を v6.x にアップグレードした後 Matlab が起動できなくなった場合、{{AUR|ncurses5-compat-libs}} パッケージを[[インストール]]してください。[https://bbs.archlinux.org/viewtopic.php?id=202575 BBS#202575] を参照。 |
+ | {{Pkg|ncurses}} を v6.x にアップグレードした後 Matlab (R2016a 以前) が起動できなくなった場合、{{AUR|ncurses5-compat-libs}} パッケージを[[インストール]]してください。[https://bbs.archlinux.org/viewtopic.php?id=202575 BBS#202575] を参照。 |
+ | |||
+ | 新しいバージョンの Matlab (例: R2017b) ではフォントディスプレイがロードできずに問題が発生することがあります。{{ic|$MATLAB/bin/glnxa64/}} の {{ic|libfreetype.so.6}} フォントディスプレイファイルを 'exclude' ディレクトリに移動してみてください。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=231299 BBS#231299] を参照。 |
||
+ | |||
+ | ncurses の互換レイヤーは R2018a からは不要です。 |
||
=== Intel Graphics でレンダリング時や終了時にフリーズする === |
=== Intel Graphics でレンダリング時や終了時にフリーズする === |
||
− | Intel Graphics チップで DRI3 を有効にしている場合に問題が発生すると一部のユーザーが報告しています。MATLAB の |
+ | Intel Graphics チップで DRI3 を有効にしている場合に問題が発生すると一部のユーザーが報告しています。DRI3 を無効化して MATLAB を DRI2 のハードウェアレンダリングで動作させると解決する場合があります。{{ic|LIBGL_DRI3_DISABLE}} 環境変数を {{ic|1}} に設定して MATLAB を起動してください: |
+ | |||
+ | LIBGL_DRI3_DISABLE=1 /{MATLAB}/bin/matlab |
||
+ | |||
+ | 上記の方法で解決しない場合、MATLAB のコマンドでソフトウェアレンダリングを選択することで問題は抑えられます (ただしパフォーマンスが落ちます): |
||
opengl('save','software') |
opengl('save','software') |
||
詳しくは [https://bugzilla.redhat.com/show_bug.cgi?id=1357571] を見てください。 |
詳しくは [https://bugzilla.redhat.com/show_bug.cgi?id=1357571] を見てください。 |
||
+ | |||
+ | === アドオンマネージャが動作しない === |
||
+ | このセクションは R2017b と R2018a が対象です。 |
||
+ | |||
+ | アドオンマネージャを使うには {{AUR|libselinux}} パッケージが必要です。 |
||
+ | |||
+ | pango-1.40.5 から pango-1.40.6 にアップグレードすると、MATLABWindow アプリケーション (アドオンマネージャやシミュレーションデータインスペクタなど) が起動できなくなります [https://bugs.archlinux.org/task/54257]。MATLAB に付属している glib ライブラリのかわりにシステムライブラリを使うようにすることで問題は解決します。R2017b 現在、{{ic|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 ではライブラリは {{ic|/usr/lib/}} に存在します。 |
||
+ | |||
+ | {{ic|*.0}} リンクも同じように置き換えてください。 |
||
+ | |||
+ | インターフェイスを開くには "libfreetype.so.6" のリンクの修正も必要です。{{ic|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 |
||
+ | |||
+ | {{Pkg|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 でも問題は存在します。 |
||
+ | |||
+ | [https://www.teamdev.com/jxbrowser 最新の jxbrowser] をダウンロードして以下の jar を置き換えることで問題は解決します: |
||
+ | |||
+ | matlabroot/java/jarext/jxbrowser-chromium/jxbrowser-chromium.jar |
||
+ | matlabroot/java/jarext/jxbrowser-chromium/jxbrowser-linux64.jar |
||
+ | |||
+ | MATLAB は上記の jar を自動的に {{ic|matlabroot/sys/jxbrowser-chromium/glnxa64/chromium}} に展開します (ヘルプブラウザを開いたとき)。{{ic|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 キーを押しながらクリックすることで問題を回避できます。 |
||
+ | |||
+ | === 起動しない (ライセンスエラー) === |
||
+ | |||
+ | 以下のようにコマンドラインから起動したときにライセンスエラーが表示される場合: |
||
+ | {{hc |
||
+ | |$ 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 が起動せず、以下のようにエラーが表示される場合: |
||
+ | {{hc |
||
+ | |$ matlab| |
||
+ | Fatal Internal Error: Internal Error: Failure occurs during desktop startup. Details: Failure loading desktop class. |
||
+ | }} |
||
+ | |||
+ | {{ic|_JAVA_OPTIONS}} 環境変数で {{ic|1=-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 は既に {{ic|/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 |
||
+ | |||
+ | {{ic|$DISPLAY}} 変数を設定して既存の X サーバーインスタンスを使用: |
||
+ | |||
+ | $ export DISPLAY=:0 |
||
+ | |||
+ | {{ic|$MATLABROOT/bin}} のバイナリを使うことで通常通りに MATLAB を起動できます。 |
2018年4月24日 (火) 21:59時点における版
関連記事
公式ウェブサイト より:
- MATLAB は、数値計算、可視化およびプログラミングのための高水準言語および対話型環境です。MATLAB を使用して、データ解析、アルゴリズム開発、各種モデルおよびアプリケーションの作成を行うことができます。言語、ツール、組み込み関数により、多様なアプローチの調査が可能となり、スプレッドシートや C/C++、Java などの従来のプログラミング言語よりもすばやく解を求めることができます。
目次
- 1 概要
- 2 インストール
- 3 アクティベーション
- 4 設定
- 5 トラブルシューティング
- 5.1 Static TLS エラー
- 5.2 グラフィックを表示したときに MATLAB がクラッシュする
- 5.3 DWM/Awesome を使っている場合に UI が表示されない/グレーで表示される
- 5.4 テキストが不明瞭または表示されない
- 5.5 メニューやフィールドのテキストやフォントが崩れる
- 5.6 インストール
- 5.7 インストール時のライブラリエラー
- 5.8 起動時の警告やエラー
- 5.9 起動時にセグメンテーション違反
- 5.10 Intel Graphics でレンダリング時や終了時にフリーズする
- 5.11 アドオンマネージャが動作しない
- 5.12 Live Script エラー
- 5.13 ウェブカメラ・ビデオデバイスを使う
- 5.14 ヘルプブラウザを閉じたときに数分間 MATLAB がフリーズする
- 5.15 ドロップダウンメニューが選択できない
- 5.16 起動しない (ライセンスエラー)
- 5.17 起動時に "Failure loading desktop class" で MATLAB がクラッシュする
- 5.18 MATLABWindow のインターフェイスでテキストフィールドに入力できない
- 6 systemd-nspawn で Matlab
概要
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" でない場合、システム設定に問題が存在します。
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/
図のフォント
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
上記のようにしても 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 を起動してください。問題が解決したら、上記のコマンドをスタートスクリプトに記述してください (.xinitrc
や bspwmrc
など)。他のアプリケーション (neofetch
や tdrop
) もウィンドウマネージャが 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 を起動できます。