【发布时间】:2012-07-05 15:49:51
【问题描述】:
我编写了一个 MATLAB 程序,它可以即时创建自定义 MATLAB 函数,并使用 unix 命令在其他 MATLAB 实例中启动它们。我使用这个程序来自动化 fMRI 神经成像分析(使用 SPM8 for MATLAB),一切正常。但是,MATLAB 规定函数名称长度最多为 63 个字符 (namelengthmax)。因为我需要在每个函数名称中保存两个不同的时间戳以及创建它的函数的名称(我有几个不同的函数来创建这些用于多线程 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),而且我也可以将我动态创建的函数划分在不同的子文件夹中,这些子文件夹也是动态创建的,例如。带有全局时间戳。 编辑: 或者,我什至可以创建整个函数名称的散列,并将散列用作函数名称,而不是上面显示的人类可读的字符串。
但是,我计划在“分析线程函数”的名称中添加更多数据(本次运行中使用的不同分析参数集的一个或多个哈希值来识别不同时间的相同分析)。如果可能的话,我想让它保持简洁(人类可读的函数名称有助于调试动态创建的“分析线程函数”)。
那么,有什么方法可以扩展 namelengthmax ? 我在 Linux 中运行 MATLAB R2012a。我也很高兴听到任何其他解决此问题的方法。
【问题讨论】:
-
我很确定 Matlab 将此设置为硬编码。您可以查看
namelengthmax,因为这是设置最大值。我怀疑它是否可以改变。