このページは、主に神経科学に関することがらについて、気になることを集めたメモ集です。

SPMのウェブサイトには、SPM12はMATLAB R2016aにも対応していると記載されているが、SPMメインメニューからfMRIやPET/VBMなどに進もうとすると、エラーが出て動かない。

エラーは、spm_figure.mの778行目に出てくるdeleteコマンドで発生している。

ただし、これは「デスクトップの言語」が日本語のときのみで、英語の場合には、このようなエラーは生じない。

なので、MATLAB R2016aでSPM12を動かしたい場合には、現時点では「デスクトップの言語」を英語にしなければならない。


【追記】
「デスクトップの言語」が日本語である場合、正しく動かないのは、spm_figure.mの777行目のfindallコマンドの返り値が空のGraphics Placeholderになってしまうため。

次の行のdeleteコマンドで、引数となるallchild(t0)の値が空のセル配列となり、そこでエラーが起こる。

一方、「デスクトップの言語」が英語の場合には、findallコマンドの返り値はgraphics配列であり、allchild(t0)もgraphics配列となるため、エラーは生じない。

なぜ、このようなことになるかというと、「デスクトップの言語」が日本語の場合、figureの組み込みメニューが日本語に翻訳されるため、findallコマンドでラベルが"&Help"のものをさがすと見つからずに、空のGraphics Placeholderが返されることになるから。

これを防ぐためには、上述のように「デスクトップの言語」を英語とするか、あるいは777行目の "findall(allchild(F), 'Flat', 'Label', '&Help');" の '&Help' を 'ヘルプ(&H)' に変更する。
タグ

このページへのコメント

知人にこのエラーが出た人がおり、原因を調べていたら、ここに到達しました。原因がはっきりわかって助かりました。私のブログでも紹介させていただきます。どうもありがとうございました。

0
Posted by nemoto 2016年05月24日(火) 21:41:17 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます