使用正确的名称保存当前目录中的文件的快捷方式?

时间:2017-04-19 01:14:47

标签: matlab

是否有使用当前名称将打开文件保存到当前目录的快捷方式?如果我下载多个具有相同名称的文件,则会进入我的“下载”文件夹,最终会使用function (1).m而不是function.m这样的名称。

此时,通过我的Web浏览器打开文件可以轻松打开文件并查看内容 - MATLAB查看文件扩展名并打开它。但是,如果它是一个函数,我必须在我能够使用代码之前另存为并移动/重命名文件。

编辑:由于MATLAB坚持文件名与函数名相同,我希望有一个快捷方式可以将打开的文件直接保存到当前的MATLAB路径并对其进行相应的命名。

由于MATLAB约定文件名与函数名相同,我希望有一个快捷方式可以将打开文件直接保存到当前MATLAB路径,并根据文件中指定的函数名称对其进行命名。

1 个答案:

答案 0 :(得分:2)

您将需要一个始终位于Matlab路径上的目录。这可以通过adding one in the startup.m script实现。

然后你应该将以下函数savefunc.m保存到该目录,这样你就可以随时调用它。

function savefunc(FuncName, Directory)
    % Set directory if not given, default is working directory
    if nargin < 2; Directory = pwd; end
    % Get active document
    ActiveDoc = matlab.desktop.editor.getActive;
    % Set FuncName if not given, or if FuncName was empty string
    if nargin < 1 || strcmp(FuncName, '');
        % Get function name
        FuncName = ActiveDoc.Text;          % Entire text of document
        % Could use indexing to only take first n characters, 
        %   and not load entire string of long function into variable. 
        %   FuncName = ActiveDoc.Text(1:min(numel(ActiveDoc.Text), n));  
        FuncName = strsplit(FuncName, '('); % Split on parenthesis
        FuncName = FuncName{1};             % First item is "function [a,b,c] = myFunc"
        FuncName = strsplit(FuncName, ' '); % Split on space (functions don't always have equals)
        FuncName = strtrim(FuncName{end});  % Last item (without whitespace) is "myFunc"
    end
    % Save the file
    saveAs(ActiveDoc, fullfile(Directory, [FuncName, '.m']));    
end

现在,假设您刚刚创建了以下Untitled.m

function [a,b,c] = mytest()
    a = 1; b = 1; c = 1;
end

快捷方式:打开Untitled.m,然后输入命令窗口

savefunc()

Untitled.m将在当前工作目录中保存为mytest.m。请注意,如果您愿意,您还可以传递不同的函数名称和save-as目录,这使其适用于其他场合。

如果要指定目录但使用自动命名,则可以将空字符串作为FuncName传递。

您可以使用matlab.desktop.editor.getAll对此进行扩展以获取所有打开的文档,然后循环浏览它们以进行保存。

有关详细信息,请在命令窗口中键入help matlab.desktop.editor,似乎缺少在线文档。

  

matlab.desktop.editor:以编程方式访问MATLAB编辑器以打开,更改,保存或关闭     文档。

最后,请注意,不需要“保存成功”类型的消息,因为您将看到文件名更改,如果失败也会收到错误(来自saveAs文档):

  

如果在saveAs操作期间发生任何错误,MATLAB将抛出MATLAB:Editor:Document:SaveAsFailed异常。如果操作在没有抛出异常的情况下返回,则假定操作成功。