unix
カスタム MATLAB 関数をオンザフライで作成し、コマンドを使用して他の MATLAB インスタンスで起動する MATLAB プログラムを作成しました。このプログラムを使用して、fMRI 神経画像解析を自動化しました (MATLAB に SPM8 を使用)。すべて正常に動作します。ただし、MATLAB では、関数名の長さが最大 63 文字に制限されています ( namelengthmax
)。各関数名に 2 つの異なるタイムスタンプをそれを作成した関数の名前と共に保存する必要があるため (マルチスレッド fMRI 分析に使用されるこれらの新しい関数を作成するいくつかの異なる関数があります)、63 文字は次のようなファイル名にはかなり制限されます。 :
atf_2012_07_05_18_01_02_specify_1st_level_2012_07_05_18_10_15.m
この例atf
では、「分析スレッド関数」(同様のファイル名を持つ他のファイルから分離するため) を意味し、最初のタイムスタンプは実行を識別します (グローバル タイムスタンプ、この場合は 2012 年 7 月 5 日の 18:01:02)。この新しい「分析スレッド関数」を作成しspecify_1st_level
た関数 (この場合はspecify_1st_level.m
(および異なる分析サブジェクト、または異なる分析) であり、同時に実行されます。
私の問題は、関数名の文字数制限が 63 文字であることです。
アンダースコア ( ) なしでタイムスタンプを記述_
したり、それらを圧縮したり、関数名を短くしたり (例: specify_1st_level.m
-> sp1st.m
) したり、その場で作成した関数を別のサブフォルダーに分割したりできることを認識しています。その場で名前を付けます。グローバルタイムスタンプ付き。編集:または、関数名全体のハッシュを作成し、上記の人間が読める文字列の代わりにハッシュを関数名として使用することもできます。
ただし、「分析スレッド関数」の名前にさらにデータを追加する予定です (異なる時間の同一の分析を識別するために、この実行で使用される異なる分析パラメーター セットの 1 つまたは複数のハッシュ値)。可能であれば、私はそれを素晴らしくシンプルに保ちたいと思っています (人間が読める関数名は、その場で作成された「分析スレッド関数」のデバッグに役立ちます)。
それで、拡張する方法はあります namelengthmax
か?Linux で MATLAB R2012a を実行しています。また、この問題を解決する他の方法を聞いてうれしいです。