许多网络浏览器允许撤消关闭标签:
是否可以在Matlab的编辑器中撤消关闭选项卡?
我在Windows 7上使用R2014a。
答案 0 :(得分:8)
在MATLAB中没有正式支持,但参考Undocumented MATLAB,有一种解决方法。
MATLAB将其桌面窗口状态存储在名为MATLABDesktop.xml
的文件中,该文件位于用户的prefdir
(首选项目录)文件夹中。只需在命令提示符下键入prefdir
并按 Enter 或 RETURN ,就可以回显MATLAB中的位置。当您也使用Windows时,您也可以在MATLAB中打开文件夹:
winopen(prefdir);
这应该打开一个新的Windows资源管理器窗口,它将直接带您进入prefdir
文件夹。
此文件包含有关每个桌面窗口的位置和状态的信息。由于编辑器文件被视为桌面文档,因此它们也包含在此文件中。因此,当您关闭编辑器时,只需从MATLABDesktop.xml
文件中删除这些文档。
事实证明,MATLAB会自动将此文件的备份版本存储在另一个名为MATLABDesktop.xml.prev
的文件中,该文件位于同一prefdir
文件夹中。我也在Windows 7中使用MATLAB R2014a,我已经仔细检查过这些文件是否也在我的系统上,而且它们都是!
因此,在执行任何其他操作之前,请关闭MATLAB,删除最新的MATLABDesktop.xml
文件,将其替换为MATLABDesktop.xml.prev
文件的副本,并将其重命名为MATLABDesktop.xml
。之后,重新启动MATLAB,编辑器应该重新打开以前的选项卡。
答案 1 :(得分:0)
您可以使用以下代码。它从 MATLABDesktop.xml.prev
%parse XML file
xmlFiles = xmlread([prefdir filesep 'MATLABDesktop.xml.prev']);
%Retrieve the "clients"
FileNodes = xmlFiles.getElementsByTagName('Client');
%get the length of the FileNodes
nrFiles = FileNodes.getLength;
%initialize Files
Files = cell(nrFiles,1);
%initialize isFile
isFile = zeros(nrFiles,1);
%Iterate over all Elements and check if it is a file.
for iNode = 0:nrFiles-1 % Java indexing.
%Files
Files{iNode+1} = char(FileNodes.item(iNode).getAttribute('Title'));
%check if the "client" is a file:
isFile(iNode+1) = exist(Files{iNode+1},'file') == 2 && ~(strcmp(Files{iNode+1},'Workspace'));
end
%remove the other files:
MyFiles = Files(find(isFile));
%open the files in the editor:
edit(MyFiles{:});