如何在 Matlab 中创建命令别名

use*_*226 5 matlab

Matlab 中是否有与 Unix“别名”类似的概念?

这个问题Is there a way to do command aliasing in matlab R2011b? 建议定义匿名函数,并扩展答案,这些函数可以在启动时获取,但这会导致函数句柄出现在工作区中,清除后会消失。

是否有更强大且类似 Unix 的解决方案?似乎是一件非常有用的事情......

Str*_*Bad 4

我不确定你为什么要这样做,但是......

假设您愿意在专用于别名的路径上有一个目录,您可以在该目录中创建 m 文件来运行别名。在这种情况下,工作区中将不存在别名。您当然可以自己编写别名文件,但以下函数会自动为您创建别名。如果您尝试使用别名的函数/脚本当前不在搜索路径上,则该函数可能会感到困惑。从您不编写的意义上来说,该功能并不“完美”

alias myAlias = run('full/path/to/some/script')
Run Code Online (Sandbox Code Playgroud)

反而

alias myAlias full/path/to/some/script
Run Code Online (Sandbox Code Playgroud)
function alias(aliasName, functionName)
% alias myfoo foo

    aliasPath = './alias';
    isscript = false;
    try
        nargin(functionName);
    catch %#ok<CTCH>
        isscript = true;
    end
    
    if isscript
        fileID = fopen([aliasPath, aliasName, '.m'],'w');
        fprintf(fileID, '%s\n', ['run(', functionName, ')']);
        fclose(fileID);
    else
        fileID = fopen([aliasPath, aliasName, '.m'],'w');
        fprintf(fileID, '%s\n', ['function varargout = ', aliasName, '(varargin)']);
        fprintf(fileID, '\t%s\n', ['varargout{1:nargout} = ', functionName, '(varargin{:});']);
        fprintf(fileID, '%s\n', 'end');
        fclose(fileID);
    end
end
Run Code Online (Sandbox Code Playgroud)