#matlab
#matlab
Вопрос:
Многие веб-браузеры позволяют отменить закрытие вкладки:
Можно ли отменить закрытие вкладки в редакторе Matlab?
Я использую R2014a в Windows 7.
Ответ №1:
Он официально не поддерживается в MATLAB, но со ссылкой на недокументированный MATLAB существует обходной путь.
MATLAB сохраняет свое состояние рабочего стола Windows в вызываемом файле MATLABDesktop.xml
, который находится в папке пользователя prefdir
(каталог предпочтений). Вы можете повторить , где это находится в MATLAB, просто введя prefdir
в командной строке и нажав Enterили RETURN. Поскольку вы также используете Windows, вы также можете сделать это, чтобы открыть папку в MATLAB:
winopen(prefdir);
Это должно открыть новое окно Проводника Windows, которое приведет вас непосредственно к prefdir
папке.
Этот файл содержит информацию о положении и состоянии каждого окна рабочего стола. Поскольку файлы редактора считаются документами рабочего стола, они также включены в этот файл. Таким образом, когда вы закрываете редактор, эти документы просто удаляются из MATLABDesktop.xml
файла.
Оказывается, MATLAB автоматически сохраняет резервную версию этого файла в другом вызываемом файле MATLABDesktop.xml.prev
в той же prefdir
папке. Я также использую MATLAB R2014a в Windows 7, и я дважды проверил, есть ли эти файлы в моей системе, и они есть!
Поэтому, прежде чем делать что-либо еще, закройте MATLAB, удалите последний MATLABDesktop.xml
файл, замените его копией MATLABDesktop.xml.prev
файла, переименовав его в MATLABDesktop.xml
. После этого перезапустите MATLAB, и редактор должен снова открыться с вашими предыдущими вкладками.
Комментарии:
1. Я всегда впечатлен знаниями о такого рода недокументированных вещах. 1
Ответ №2:
Вы можете использовать следующий код. Он извлекает имена файлов из 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 amp;amp; ~(strcmp(Files{iNode 1},'Workspace'));
end
%remove the other files:
MyFiles = Files(find(isFile));
%open the files in the editor:
edit(MyFiles{:});
Из mathworks