我们都知道MATLAB为在MATLAB函数中用作参数的文件名提供了tab-completion,如importdata
,imread
。我们如何为我们创建的功能做到这一点?
修改
显示当前目录中的文件和文件夹。
答案 0 :(得分:22)
警告:此处不支持黑客攻击。
在Matlab安装中查看文件toolbox \ local \ TC.xml。这似乎包含选项卡完成的参数类型映射。 (我在R2009b中只是为了“imread”的Matlab安装而找到了这个。)
在<TC>
元素中添加此行将获得每个参数的文件名的制表选项。
<binding name="importdata" ctype="FILE"/>
这需要修改Matlab安装。对于toolbox / local中的一些其他文件,例如classpath.txt,您可以通过将修改后的副本放在从Matlab启动的目录中来覆盖它们,但这对我来说不适用于TC.xml。
答案 1 :(得分:5)
没有支持的方法将函数添加到参数Tab完成,但我使用的一个技巧是放一个“!”在命令前面,所以它被视为系统命令。然后,Tab将完成文件路径。一旦我的MATLAB命令完成,我回到行的开头,删除“!”然后按Enter键。
答案 2 :(得分:3)
对于Matlab 2016a及以上版本:
Matlab 2016a以后的文件Tc.xml不存在。它使用 .json (Java Script Object Notation)文件来实现相同的目的。一个简单的例子如下。
假设您有一个名为 myFunction.m
的Matlab函数文件。此外,假设此函数需要扩展名为 .ext
的文件作为输入,并且您希望tab-completion显示此函数的所有可能输入选项。然后,将以下内容写入文件并将其命名为 functionSignatures.json
。
{
"myFunction":
{
"inputs":
[
{"name":"filename", "kind":"required", "type":"filepath=*.ext" }
]
}
}
将此文件放在与 myFunction.m
文件相同的目录中。现在,重新启动Matlab。
此文件的作用:输入功能输入时,按Tab键,您会看到一个扩展名为 .ext
的文件列表。如果您希望所有文件都显示在标签完成弹出窗口中,而不考虑其扩展名,请将文件 "type":"filepath=*.ext"
中的"type":"filepath"
替换为functionSignatures.json
。